Skip to content

Commit

Permalink
Merge c94991d into 357c735
Browse files Browse the repository at this point in the history
  • Loading branch information
jawaidm committed Aug 21, 2019
2 parents 357c735 + c94991d commit 98ad1db
Show file tree
Hide file tree
Showing 68 changed files with 13,187 additions and 481 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ wildlifecompliance/static/wildlifecompliance_vue/static/*


# npm locks
*-lock.json
#*-lock.json

commercialoperator/static/commercialoperator_vue/static/css/app.css
commercialoperator/static/commercialoperator_vue/static/js/app.js
Expand Down
22 changes: 11 additions & 11 deletions commercialoperator/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import Group
from django.conf import settings

from ledger.accounts import admin as ledger_admin
#from ledger.accounts.models import EmailUser, Document, Address, Profile
Expand All @@ -26,20 +27,19 @@ class EmailUserAdmin(ledger_admin.EmailUserAdmin):
def get_fieldsets(self, request, obj=None):
""" Remove the is_superuser checkbox from the Admin page, if user is CommercialOperatorAdmin and NOT superuser """
fieldsets = super(UserAdmin, self).get_fieldsets(request, obj)
if not obj:
return fieldsets
#if not obj:
# return fieldsets

if request.user.is_superuser:
return fieldsets

group = Group.objects.filter(name='CommercialOperator Admin')
if group and group[0] in request.user.groups.all():
fieldsets = deepcopy(fieldsets)
for fieldset in fieldsets:
if 'is_superuser' in fieldset[1]['fields']:
if type(fieldset[1]['fields']) == tuple :
fieldset[1]['fields'] = list(fieldset[1]['fields'])
fieldset[1]['fields'].remove('is_superuser')
break
# User is not a superuser, remove is_superuser checkbox
fieldsets = deepcopy(fieldsets)
for fieldset in fieldsets:
if 'is_superuser' in fieldset[1]['fields']:
if type(fieldset[1]['fields']) == tuple :
fieldset[1]['fields'] = list(fieldset[1]['fields'])
fieldset[1]['fields'].remove('is_superuser')
break

return fieldsets
60 changes: 42 additions & 18 deletions commercialoperator/components/approvals/email.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,33 +12,33 @@

SYSTEM_NAME = settings.SYSTEM_NAME_SHORT + ' Automated Message'
class ApprovalExpireNotificationEmail(TemplateEmailBase):
subject = 'Your Approval has been expired.'
subject = 'Your Licence has been expired.'
html_template = 'commercialoperator/emails/approval_expire_notification.html'
txt_template = 'commercialoperator/emails/approval_expire_notification.txt'


class ApprovalCancelNotificationEmail(TemplateEmailBase):
subject = 'Your Approval has been cancelled.'
subject = 'Your Licence has been cancelled.'
html_template = 'commercialoperator/emails/approval_cancel_notification.html'
txt_template = 'commercialoperator/emails/approval_cancel_notification.txt'

class ApprovalSuspendNotificationEmail(TemplateEmailBase):
subject = 'Your Approval has been suspended.'
subject = 'Your Licence has been suspended.'
html_template = 'commercialoperator/emails/approval_suspend_notification.html'
txt_template = 'commercialoperator/emails/approval_suspend_notification.txt'

class ApprovalSurrenderNotificationEmail(TemplateEmailBase):
subject = 'Your Approval has been surrendered.'
subject = 'Your Licence has been surrendered.'
html_template = 'commercialoperator/emails/approval_surrender_notification.html'
txt_template = 'commercialoperator/emails/approval_surrender_notification.txt'

class ApprovalReinstateNotificationEmail(TemplateEmailBase):
subject = 'Your Approval has been reinstated.'
subject = 'Your Licence has been reinstated.'
html_template = 'commercialoperator/emails/approval_reinstate_notification.html'
txt_template = 'commercialoperator/emails/approval_reinstate_notification.txt'

class ApprovalRenewalNotificationEmail(TemplateEmailBase):
subject = 'Your Approval is due for renewal.'
subject = 'Your Licence is due for renewal.'
html_template = 'commercialoperator/emails/approval_renewal_notification.html'
txt_template = 'commercialoperator/emails/approval_renewal_notification.txt'

Expand Down Expand Up @@ -87,15 +87,24 @@ def send_approval_cancel_email_notification(approval):
else:
_log_user_email(msg, approval.submitter, proposal.submitter, sender=sender_user)

def send_approval_suspend_email_notification(approval):
def send_approval_suspend_email_notification(approval, request=None):
email = ApprovalSuspendNotificationEmail()
proposal = approval.current_proposal

if 'test-emails' in request.path_info:
details = 'This are my test details'
from_date = '01/01/1970'
to_date = '01/01/2070'
else:
details = approval.suspension_details['details'],
from_date = approval.suspension_details['from_date'],
to_date = approval.suspension_details['to_date']

context = {
'approval': approval,
'details': approval.suspension_details['details'],
'from_date': approval.suspension_details['from_date'],
'to_date': approval.suspension_details['to_date']
'details': details,
'from_date': from_date,
'to_date': to_date
}
sender = settings.DEFAULT_FROM_EMAIL
try:
Expand All @@ -112,14 +121,21 @@ def send_approval_suspend_email_notification(approval):
else:
_log_user_email(msg, approval.submitter, proposal.submitter, sender=sender_user)

def send_approval_surrender_email_notification(approval):
def send_approval_surrender_email_notification(approval, request=None):
email = ApprovalSurrenderNotificationEmail()
proposal = approval.current_proposal

if 'test-emails' in request.path_info:
details = 'This are my test details'
surrender_date = '01/01/1970'
else:
details = approval.surrender_details['details'],
surrender_date = approval.surrender_details['surrender_date'],

context = {
'approval': approval,
'details': approval.surrender_details['details'],
'surrender_date': approval.surrender_details['surrender_date'],
'details': details,
'surrender_date': surrender_date,
}
sender = settings.DEFAULT_FROM_EMAIL
try:
Expand All @@ -138,10 +154,18 @@ def send_approval_surrender_email_notification(approval):
def send_approval_renewal_email_notification(approval):
email = ApprovalRenewalNotificationEmail()
proposal = approval.current_proposal
url=settings.SITE_URL if settings.SITE_URL else ''
url += reverse('external')

if "-internal" in url:
# remove '-internal'. This email is for external submitters
url = ''.join(url.split('-internal'))


context = {
'approval': approval,
'proposal': approval.current_proposal
'proposal': approval.current_proposal,
'url': url,

}
sender = settings.DEFAULT_FROM_EMAIL
Expand All @@ -151,8 +175,8 @@ def send_approval_renewal_email_notification(approval):
EmailUser.objects.create(email=sender, password='')
sender_user = EmailUser.objects.get(email__icontains=sender)
#attach renewal notice
renewal_document= approval.renewal_document._file
if renewal_document is not None:
if approval.renewal_document and approval.renewal_document._file is not None:
renewal_document= approval.renewal_document._file
file_name = approval.renewal_document.name
attachment = (file_name, renewal_document.file.read(), 'application/pdf')
attachment = [attachment]
Expand Down Expand Up @@ -181,9 +205,9 @@ def send_approval_reinstate_email_notification(approval, request):
_log_approval_email(msg, approval, sender=sender)
#_log_org_email(msg, approval.applicant, proposal.submitter, sender=sender)
if approval.org_applicant:
_log_org_email(msg, approval.org_applicant, proposal.submitter, sender=sender_user)
_log_org_email(msg, approval.org_applicant, proposal.submitter, sender=sender)
else:
_log_user_email(msg, approval.submitter, proposal.submitter, sender=sender_user)
_log_user_email(msg, approval.submitter, proposal.submitter, sender=sender)



Expand Down
48 changes: 31 additions & 17 deletions commercialoperator/components/approvals/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from django.utils import timezone
from django.contrib.sites.models import Site
from django.conf import settings
from django.db.models import Q
from taggit.managers import TaggableManager
from taggit.models import TaggedItemBase
from ledger.accounts.models import Organisation as ledger_organisation
Expand Down Expand Up @@ -118,21 +119,11 @@ def applicant(self):
except:
return "Applicant Not Set"


# @property
# def applicant(self):
# #import ipdb; ipdb.set_trace()
# if self.current_proposal.applicant:
# return self.current_proposal.applicant
# else:
# if self.org_applicant:
# return self.org_applicant.organisation.name
# elif self.proxy_applicant:
# return "{} {}".format(
# self.proxy_applicant.first_name,
# self.proxy_applicant.last_name)
# else:
# return None
@property
def linked_applications(self):
ids = Proposal.objects.filter(approval__lodgement_number=self.lodgement_number).values_list('id', flat=True)
all_linked_ids = Proposal.objects.filter(Q(previous_application__in=ids) | Q(id__in=ids)).values_list('lodgement_number', flat=True)
return all_linked_ids

@property
def applicant_type(self):
Expand Down Expand Up @@ -206,6 +197,15 @@ def can_reinstate(self):
def allowed_assessors(self):
return self.current_proposal.allowed_assessors


def is_assessor(self,user):
return self.current_proposal.is_assessor(user)


def is_approver(self,user):
return self.current_proposal.is_approver(user)


@property
def is_issued(self):
return self.licence_number is not None and len(self.licence_number) > 0
Expand Down Expand Up @@ -261,13 +261,21 @@ def can_amend(self):
return False


def generate_doc(self, user):
from commercialoperator.components.approvals.pdf import create_approval_doc
def generate_doc(self, user, preview=False):
from commercialoperator.components.approvals.pdf import create_approval_doc, create_approval_pdf_bytes
copied_to_permit = self.copiedToPermit_fields(self.current_proposal) #Get data related to isCopiedToPermit tag

if preview:
return create_approval_pdf_bytes(self,self.current_proposal, copied_to_permit, user)

self.licence_document = create_approval_doc(self,self.current_proposal, copied_to_permit, user)
self.save(version_comment='Created Approval PDF: {}'.format(self.licence_document.name))
self.current_proposal.save(version_comment='Created Approval PDF: {}'.format(self.licence_document.name))

# def generate_preview_doc(self, user):
# from commercialoperator.components.approvals.pdf import create_approval_pdf_bytes
# copied_to_permit = self.copiedToPermit_fields(self.current_proposal) #Get data related to isCopiedToPermit tag

def generate_renewal_doc(self):
from commercialoperator.components.approvals.pdf import create_renewal_doc
self.renewal_document = create_renewal_doc(self,self.current_proposal)
Expand Down Expand Up @@ -464,6 +472,12 @@ def approval_surrender(self,request,details):
raise


class PreviewTempApproval(Approval):
class Meta:
app_label = 'commercialoperator'
#unique_together= ('lodgement_number', 'issue_date')


class ApprovalLogEntry(CommunicationsLogEntry):
approval = models.ForeignKey(Approval, related_name='comms_logs')

Expand Down
Loading

0 comments on commit 98ad1db

Please sign in to comment.