Skip to content

Commit

Permalink
Email Hosting Provider update
Browse files Browse the repository at this point in the history
  • Loading branch information
Nar0kan committed Jul 9, 2023
1 parent 55d79be commit 6e13dea
Show file tree
Hide file tree
Showing 5 changed files with 134 additions and 96 deletions.
44 changes: 25 additions & 19 deletions agents/views.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
from django.shortcuts import render
from django.core.mail import EmailMessage
from django.template.loader import render_to_string
from django.urls import reverse
from django.views import generic
from django.core.mail import send_mail
from leads.models import Agent, User
from .mixins import OrganisorRequiredMixin
from django.contrib.auth.mixins import LoginRequiredMixin
from .forms import AgentCreateModelForm, AgentProfileUpdateModelForm, CustomAgentUpdateForm
from secrets import randbelow
from crispy_forms.helper import FormHelper

from .mixins import OrganisorRequiredMixin
from .forms import AgentCreateModelForm, AgentProfileUpdateModelForm, CustomAgentUpdateForm
from django.conf import settings
from leads.models import Agent, User


class AgentListView(OrganisorRequiredMixin, generic.ListView):
template_name = "agents/agent_list.html"
Expand All @@ -25,13 +28,13 @@ class AgentCreateView(OrganisorRequiredMixin, generic.CreateView):

def get_success_url(self) -> str:
return reverse("agents:agent-list")

def form_valid(self, form):
user = form.save(commit=False)
user.is_agent = True
user.is_organisor = False
password = ''.join([str(randbelow(10000)) for i in range(20)])

password = ''.join([str(randbelow(10000)) for i in range(16)])
user.set_password(password)
user.save()

Expand All @@ -40,22 +43,25 @@ def form_valid(self, form):
organisation=self.request.user.userprofile,
)

send_mail(
from_email=f"{self.request.user.userprofile}",
recipient_list=[user.email],
recepients = user.email # user.agent.organisation.email
email = EmailMessage(
subject="You are invited to be an Agent",
message=f"You were added as an agent on Ingot CRM.\n\n\
Log in form: https://127.0.0.1:8000/login \n\n\
User this password to log in the system: {password}."
body=f"You were added as an agent on Ingot CRM.\n\n\
Login form: https://ingot-crm.vercel.app/login \n\n\
Use this password to log in the system: '{password}'.",
from_email=settings.EMAIL_HOST_USER,
to=[recepients]
)
email.fail_silently = False
email.send()

return super(AgentCreateView, self).form_valid(form)


class AgentDetailView(OrganisorRequiredMixin, generic.DetailView):
template_name = "agents/agent_detail.html"
context_object_name = "agent"

def get_queryset(self):
organisation = self.request.user.userprofile
return Agent.objects.filter(organisation=organisation)
Expand All @@ -79,7 +85,7 @@ def get_initial(self):
initial['position'] = agent.user.position
initial['photo'] = agent.user.photo
initial['email'] = agent.user.email

return initial

def form_valid(self, form):
Expand All @@ -99,7 +105,7 @@ def get_queryset(self):
pk = self.kwargs.get('pk')
agent = Agent.objects.filter(id=pk)
return agent


class AgentDeleteView(OrganisorRequiredMixin, generic.DeleteView):
template_name = "agents/agent_delete.html"
Expand All @@ -116,7 +122,7 @@ def get_success_url(self) -> str:
class AgentProfileView(LoginRequiredMixin, generic.DetailView):
template_name = "agents/agent_profile.html"
context_object_name = "agent"

def get_queryset(self):
agent = self.request.user.id
return User.objects.filter(id=agent)
Expand All @@ -126,13 +132,13 @@ class AgentProfileUpdateView(LoginRequiredMixin, generic.UpdateView):
template_name = "agents/agent_profile_update.html"
form_class = AgentProfileUpdateModelForm
context_object_name = "agent"

def get_queryset(self):
agent = self.request.user.id
queryset = User.objects.filter(id=agent)
print(queryset)
return queryset

def form_valid(self, form):
return super(AgentProfileUpdateView, self).form_valid(form)

Expand Down
8 changes: 7 additions & 1 deletion ingotcrm/.template.env
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,14 @@ DEBUG=True
SECRET_KEY=your-secret-key
PAYPAL_RECEIVER_ID=your-receiver-id
PAYPAL_RECEIVER_EMAIL=your-receiver-email
USE_S3=bool
AWS_ACCESS_KEY_ID=your-key-id
AWS_SECRET_ACCESS_KEY=your-key
AWS_STORAGE_BUCKET_NAME=your-bucket
DB_NAME=your-db-name
DB_USER=your-db-user
DB_PASSWORD=your-password-for-db-user
DB_HOST=127.0.0.1
DB_PORT=5432
DB_PORT=1234
EMAIL_HOST_USER=smtp-host
EMAIL_HOST_PASSWORD=smtp-host-password
78 changes: 44 additions & 34 deletions ingotcrm/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,18 @@
USE_TZ = True


# SMTP Mail configuration
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = env('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = env('EMAIL_HOST_PASSWORD')

# Console backend
# EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.1/howto/static-files/

Expand Down Expand Up @@ -154,8 +166,6 @@

AUTH_USER_MODEL = 'leads.User'

EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"

LOGIN_REDIRECT_URL = "/leads"
LOGIN_URL = "/login"
LOGOUT_REDIRECT_URL = "/"
Expand All @@ -177,35 +187,35 @@
PAYPAL_RECEIVER_ID = env('PAYPAL_RECEIVER_ID')

# For debug purposes
# LOGGING = {
# 'version': 1,
# 'disable_existing_loggers': False,
# 'formatters': {
# 'verbose': {
# 'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
# 'datefmt' : "%d/%b/%Y %H:%M:%S"
# },
# 'simple': {
# 'format': '%(levelname)s %(message)s'
# },
# },
# 'handlers': {
# 'file': {
# 'level': 'DEBUG',
# 'class': 'logging.FileHandler',
# 'filename': 'mysite.log',
# 'formatter': 'verbose'
# },
# },
# 'loggers': {
# 'django': {
# 'handlers':['file'],
# 'propagate': True,
# 'level':'DEBUG',
# },
# 'MYAPP': {
# 'handlers': ['file'],
# 'level': 'DEBUG',
# },
# }
# }
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
'datefmt' : "%d/%b/%Y %H:%M:%S"
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'mysite.log',
'formatter': 'verbose'
},
},
'loggers': {
'django': {
'handlers':['file'],
'propagate': True,
'level':'DEBUG',
},
'MYAPP': {
'handlers': ['file'],
'level': 'DEBUG',
},
}
}
20 changes: 10 additions & 10 deletions leads/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from django.forms.utils import ErrorList

from django.contrib.auth.forms import (
UserCreationForm, UsernameField, AuthenticationForm,
UserCreationForm, UsernameField, AuthenticationForm,
PasswordChangeForm, PasswordResetForm, SetPasswordForm,
)

Expand All @@ -31,14 +31,14 @@ class Meta:
def __init__(self, *args, **kwargs):
organisation = kwargs.pop('organisation', None)
super().__init__(*args, **kwargs)

if organisation:
categories = Category.objects.filter(organisation=organisation)
self.fields['category'].queryset = categories

agents = Agent.objects.filter(organisation=organisation)
self.fields['agent'].queryset = agents

self.helper = FormHelper(self)
self.helper.form_show_labels = False
#self.helper.label_class = "text-black dark:text-white bg-yellow-500"
Expand All @@ -56,10 +56,10 @@ class Meta:
model = User
fields = ("username", )
field_classes = {"username": UsernameField, }

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

self.helper = FormHelper(self)

self.helper.form_show_labels = False
Expand All @@ -77,7 +77,7 @@ class Meta:

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

self.helper = FormHelper(self)
self.helper.form_show_labels = False

Expand All @@ -89,7 +89,7 @@ class Meta:

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

self.helper = FormHelper(self)
self.helper.form_show_labels = False

Expand All @@ -105,7 +105,7 @@ class CustomPasswordResetForm(PasswordResetForm):
class Meta:
model = User
fields = ("email", )

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

Expand All @@ -117,7 +117,7 @@ class CustomSetPasswordForm(SetPasswordForm):
class Meta:
model = User
fields = ("new_password1", "new_password2")

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

Expand Down
Loading

1 comment on commit 6e13dea

@Nar0kan
Copy link
Owner Author

@Nar0kan Nar0kan commented on 6e13dea Jul 9, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved

Please sign in to comment.