Skip to content

Commit

Permalink
changing to SaaS (#384)
Browse files Browse the repository at this point in the history
  • Loading branch information
ashwin31 authored May 18, 2020
1 parent 8b98c7d commit 0fad22e
Show file tree
Hide file tree
Showing 96 changed files with 12,318 additions and 7,286 deletions.
47 changes: 47 additions & 0 deletions Pipfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
pylint = "*"
black = "*"
isort = "*"

[packages]
celery = "==4.3.0"
django-simple-pagination = "==1.3"
django-compressor = "==2.3"
sorl-thumbnail = "==12.5.0"
django-phonenumber-field = "==2.2.0"
phonenumbers = "==8.10.4"
django-storages = "==1.7"
psycopg2-binary = "==2.8.3"
arrow = "==0.14.5"
requests = "==2.22.0"
boto3 = "==1.9.212"
lxml = "==4.4.1"
cssselect = "==1.1.0"
xlrd = "==1.2.0"
xlwt = "==1.3.0"
openpyxl = "==2.6.3"
pdfkit = "==0.6.1"
redis = "==3.3.8"
coverage = "==4.5.4"
raven = "==6.10.0"
pytest = "==5.1.1"
pytest-django = "==3.5.1"
codacy-coverage = "==1.3.11"
django-haystack = "==2.8.0"
elasticsearch = "==2.3"
python-memcached = "==1.59"
boto = "==2.49.0"
Django = "==2.2.10"
django-settings-export = "==1.2.1"
tblib = "*"

[requires]
python_version = "3.6"

[pipenv]
allow_prereleases = true
741 changes: 741 additions & 0 deletions Pipfile.lock

Large diffs are not rendered by default.

172 changes: 104 additions & 68 deletions accounts/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,85 +12,115 @@ class AccountForm(forms.ModelForm):
teams = forms.MultipleChoiceField(choices=teams_queryset)

def __init__(self, *args, **kwargs):
account_view = kwargs.pop('account', False)
request_user = kwargs.pop('request_user', None)
account_view = kwargs.pop("account", False)
request_user = kwargs.pop("request_user", None)
request_obj = kwargs.pop("request_obj", None)
super(AccountForm, self).__init__(*args, **kwargs)
for field in self.fields.values():
field.widget.attrs = {"class": "form-control"}
self.fields['description'].widget.attrs.update({'rows': '8'})
self.fields['status'].choices = [
(each[0], each[1]) for each in Account.ACCOUNT_STATUS_CHOICE]
self.fields['status'].required = False
self.fields["description"].widget.attrs.update({"rows": "8"})
self.fields["status"].choices = [
(each[0], each[1]) for each in Account.ACCOUNT_STATUS_CHOICE
]
self.fields["status"].required = False
for key, value in self.fields.items():
if key == 'phone':
value.widget.attrs['placeholder'] = "+911234567890"
if key == "phone":
value.widget.attrs["placeholder"] = "+911234567890"
else:
value.widget.attrs['placeholder'] = value.label

self.fields['billing_address_line'].widget.attrs.update({
'placeholder': 'Address Line'})
self.fields['billing_street'].widget.attrs.update({
'placeholder': 'Street'})
self.fields['billing_city'].widget.attrs.update({
'placeholder': 'City'})
self.fields['billing_state'].widget.attrs.update({
'placeholder': 'State'})
self.fields['billing_postcode'].widget.attrs.update({
'placeholder': 'Postcode'})
self.fields["billing_country"].choices = [
("", "--Country--"), ] + list(self.fields["billing_country"].choices)[1:]
value.widget.attrs["placeholder"] = value.label

self.fields["billing_address_line"].widget.attrs.update(
{"placeholder": "Address Line"}
)
self.fields["billing_street"].widget.attrs.update({"placeholder": "Street"})
self.fields["billing_city"].widget.attrs.update({"placeholder": "City"})
self.fields["billing_state"].widget.attrs.update({"placeholder": "State"})
self.fields["billing_postcode"].widget.attrs.update({"placeholder": "Postcode"})
self.fields["billing_country"].choices = [("", "--Country--"),] + list(
self.fields["billing_country"].choices
)[1:]
# self.fields["lead"].queryset = Lead.objects.all(
# ).exclude(status='closed')
if request_user.role == 'ADMIN':
self.fields["lead"].queryset = Lead.objects.filter().exclude(
status='closed').order_by('title')
self.fields["contacts"].queryset = Contact.objects.filter()
self.fields["teams"].choices = [(team.get('id'), team.get('name')) for team in Teams.objects.all().values('id', 'name')]
if request_user.role == "ADMIN":
self.fields["lead"].queryset = (
Lead.objects.filter(company=request_obj.company)
.exclude(status="closed")
.order_by("title")
)
self.fields["contacts"].queryset = Contact.objects.filter(
company=request_obj.company
)
self.fields["teams"].choices = [
(team.get("id"), team.get("name"))
for team in Teams.objects.filter(company=request_obj.company).values(
"id", "name"
)
]
self.fields["teams"].required = False
else:
self.fields["lead"].queryset = Lead.objects.filter(
Q(assigned_to__in=[request_user]) | Q(created_by=request_user)).exclude(status='closed').order_by('title')
self.fields["lead"].queryset = (
Lead.objects.filter(
Q(assigned_to__in=[request_user]) | Q(created_by=request_user)
)
.filter(company=request_obj.company)
.exclude(status="closed")
.order_by("title")
)
self.fields["contacts"].queryset = Contact.objects.filter(
Q(assigned_to__in=[request_user]) | Q(created_by=request_user))
Q(assigned_to__in=[request_user]) | Q(created_by=request_user)
).filter(company=request_obj.company)
self.fields["teams"].required = False

self.fields['assigned_to'].required = False
self.fields["assigned_to"].required = False
if account_view:
self.fields['billing_address_line'].required = True
self.fields['billing_street'].required = True
self.fields['billing_city'].required = True
self.fields['billing_state'].required = True
self.fields['billing_postcode'].required = True
self.fields['billing_country'].required = True
self.fields["billing_address_line"].required = True
self.fields["billing_street"].required = True
self.fields["billing_city"].required = True
self.fields["billing_state"].required = True
self.fields["billing_postcode"].required = True
self.fields["billing_country"].required = True

# lead is not mandatory while editing
if self.instance.id:
self.fields['lead'].required = False
self.fields['lead'].required = False
self.fields["lead"].required = False
self.fields["lead"].required = False

class Meta:
model = Account
fields = ('name', 'phone', 'email', 'website', 'industry',
'description', 'status', 'assigned_to',
'billing_address_line', 'billing_street',
'billing_city', 'billing_state',
'billing_postcode', 'billing_country', 'lead', 'contacts')
fields = (
"name",
"phone",
"email",
"website",
"industry",
"description",
"status",
"assigned_to",
"billing_address_line",
"billing_street",
"billing_city",
"billing_state",
"billing_postcode",
"billing_country",
"lead",
"contacts",
)


class AccountCommentForm(forms.ModelForm):
comment = forms.CharField(max_length=255, required=True)

class Meta:
model = Comment
fields = ('comment', 'account', 'commented_by')
fields = ("comment", "account", "commented_by")


class AccountAttachmentForm(forms.ModelForm):
attachment = forms.FileField(max_length=1001, required=True)

class Meta:
model = Attachments
fields = ('attachment', 'account')
fields = ("attachment", "account")


class EmailForm(forms.ModelForm):
Expand All @@ -102,28 +132,35 @@ class EmailForm(forms.ModelForm):
# scheduled_later = forms.CharField(max_length=20)

def __init__(self, *args, **kwargs):
self.account_obj = kwargs.pop('account', False)
self.account_obj = kwargs.pop("account", False)
super(EmailForm, self).__init__(*args, **kwargs)
# self.fields['message_subject'].widget.attrs['class'] = 'form-control'
# self.fields['message_subject'].widget.attrs['required'] = True
# self.fields['message_subject'].widget.attrs['placeholder'] = 'Email Subject'

# self.fields['recipient'].required = False
self.fields['from_email'].required = True
self.fields['message_subject'].required = True
self.fields['message_body'].required = True

self.fields['scheduled_date_time'].required = False
self.fields['scheduled_later'].required = False
self.fields['recipients'].required = True
self.fields['recipients'].query = self.account_obj.contacts.all()
self.fields["from_email"].required = True
self.fields["message_subject"].required = True
self.fields["message_body"].required = True

self.fields["scheduled_date_time"].required = False
self.fields["scheduled_later"].required = False
self.fields["recipients"].required = True
self.fields["recipients"].query = self.account_obj.contacts.all()
# self.fields['recipients'].choices = list((contact.get('id'), contact.get('email'))
# for contact in self.account_obj.contacts.values('id', 'email'))

class Meta:
model = Email
fields = ['recipients', 'message_subject', 'from_email',
'message_body', 'timezone', 'scheduled_date_time', 'scheduled_later']
fields = [
"recipients",
"message_subject",
"from_email",
"message_body",
"timezone",
"scheduled_date_time",
"scheduled_later",
]

# def clean_recipients(self):
# recipients = self.cleaned_data.get('recipients')
Expand All @@ -137,28 +174,27 @@ class Meta:
# return recipients

def clean_scheduled_date_time(self):
scheduled_date_time = self.cleaned_data.get('scheduled_date_time')
if self.data.get('scheduled_later') not in ['', None, False, 'false']:
if scheduled_date_time in ['', None]:
raise forms.ValidationError('This Field is required.')
scheduled_date_time = self.cleaned_data.get("scheduled_date_time")
if self.data.get("scheduled_later") not in ["", None, False, "false"]:
if scheduled_date_time in ["", None]:
raise forms.ValidationError("This Field is required.")

if self.data.get('scheduled_later') == 'true':
if scheduled_date_time in ['', None]:
raise forms.ValidationError('This Field is required.')
if self.data.get("scheduled_later") == "true":
if scheduled_date_time in ["", None]:
raise forms.ValidationError("This Field is required.")

return scheduled_date_time


def clean_message_body(self):
message_body = self.cleaned_data.get('message_body')
message_body = self.cleaned_data.get("message_body")
count = 0
for i in message_body:
if i == "{":
count += 1
elif i == "}":
count -= 1
if count < 0:
raise forms.ValidationError('Brackets do not match, Enter valid tags.')
raise forms.ValidationError("Brackets do not match, Enter valid tags.")
if count != 0:
raise forms.ValidationError('Brackets do not match, Enter valid tags.')
raise forms.ValidationError("Brackets do not match, Enter valid tags.")
return message_body
20 changes: 20 additions & 0 deletions accounts/migrations/0011_account_company.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Generated by Django 2.2.10 on 2020-04-23 10:20

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('common', '0020_auto_20200409_1653'),
('accounts', '0010_account_teams'),
]

operations = [
migrations.AddField(
model_name='account',
name='company',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='common.Company'),
),
]
Loading

0 comments on commit 0fad22e

Please sign in to comment.