Skip to content

Commit 0fad22e

Browse files
authored
changing to SaaS (#384)
1 parent 8b98c7d commit 0fad22e

File tree

96 files changed

+12318
-7286
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+12318
-7286
lines changed

Diff for: Pipfile

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
[[source]]
2+
name = "pypi"
3+
url = "https://pypi.org/simple"
4+
verify_ssl = true
5+
6+
[dev-packages]
7+
pylint = "*"
8+
black = "*"
9+
isort = "*"
10+
11+
[packages]
12+
celery = "==4.3.0"
13+
django-simple-pagination = "==1.3"
14+
django-compressor = "==2.3"
15+
sorl-thumbnail = "==12.5.0"
16+
django-phonenumber-field = "==2.2.0"
17+
phonenumbers = "==8.10.4"
18+
django-storages = "==1.7"
19+
psycopg2-binary = "==2.8.3"
20+
arrow = "==0.14.5"
21+
requests = "==2.22.0"
22+
boto3 = "==1.9.212"
23+
lxml = "==4.4.1"
24+
cssselect = "==1.1.0"
25+
xlrd = "==1.2.0"
26+
xlwt = "==1.3.0"
27+
openpyxl = "==2.6.3"
28+
pdfkit = "==0.6.1"
29+
redis = "==3.3.8"
30+
coverage = "==4.5.4"
31+
raven = "==6.10.0"
32+
pytest = "==5.1.1"
33+
pytest-django = "==3.5.1"
34+
codacy-coverage = "==1.3.11"
35+
django-haystack = "==2.8.0"
36+
elasticsearch = "==2.3"
37+
python-memcached = "==1.59"
38+
boto = "==2.49.0"
39+
Django = "==2.2.10"
40+
django-settings-export = "==1.2.1"
41+
tblib = "*"
42+
43+
[requires]
44+
python_version = "3.6"
45+
46+
[pipenv]
47+
allow_prereleases = true

Diff for: Pipfile.lock

+741
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: accounts/forms.py

+104-68
Original file line numberDiff line numberDiff line change
@@ -12,85 +12,115 @@ class AccountForm(forms.ModelForm):
1212
teams = forms.MultipleChoiceField(choices=teams_queryset)
1313

1414
def __init__(self, *args, **kwargs):
15-
account_view = kwargs.pop('account', False)
16-
request_user = kwargs.pop('request_user', None)
15+
account_view = kwargs.pop("account", False)
16+
request_user = kwargs.pop("request_user", None)
17+
request_obj = kwargs.pop("request_obj", None)
1718
super(AccountForm, self).__init__(*args, **kwargs)
1819
for field in self.fields.values():
1920
field.widget.attrs = {"class": "form-control"}
20-
self.fields['description'].widget.attrs.update({'rows': '8'})
21-
self.fields['status'].choices = [
22-
(each[0], each[1]) for each in Account.ACCOUNT_STATUS_CHOICE]
23-
self.fields['status'].required = False
21+
self.fields["description"].widget.attrs.update({"rows": "8"})
22+
self.fields["status"].choices = [
23+
(each[0], each[1]) for each in Account.ACCOUNT_STATUS_CHOICE
24+
]
25+
self.fields["status"].required = False
2426
for key, value in self.fields.items():
25-
if key == 'phone':
26-
value.widget.attrs['placeholder'] = "+911234567890"
27+
if key == "phone":
28+
value.widget.attrs["placeholder"] = "+911234567890"
2729
else:
28-
value.widget.attrs['placeholder'] = value.label
29-
30-
self.fields['billing_address_line'].widget.attrs.update({
31-
'placeholder': 'Address Line'})
32-
self.fields['billing_street'].widget.attrs.update({
33-
'placeholder': 'Street'})
34-
self.fields['billing_city'].widget.attrs.update({
35-
'placeholder': 'City'})
36-
self.fields['billing_state'].widget.attrs.update({
37-
'placeholder': 'State'})
38-
self.fields['billing_postcode'].widget.attrs.update({
39-
'placeholder': 'Postcode'})
40-
self.fields["billing_country"].choices = [
41-
("", "--Country--"), ] + list(self.fields["billing_country"].choices)[1:]
30+
value.widget.attrs["placeholder"] = value.label
31+
32+
self.fields["billing_address_line"].widget.attrs.update(
33+
{"placeholder": "Address Line"}
34+
)
35+
self.fields["billing_street"].widget.attrs.update({"placeholder": "Street"})
36+
self.fields["billing_city"].widget.attrs.update({"placeholder": "City"})
37+
self.fields["billing_state"].widget.attrs.update({"placeholder": "State"})
38+
self.fields["billing_postcode"].widget.attrs.update({"placeholder": "Postcode"})
39+
self.fields["billing_country"].choices = [("", "--Country--"),] + list(
40+
self.fields["billing_country"].choices
41+
)[1:]
4242
# self.fields["lead"].queryset = Lead.objects.all(
4343
# ).exclude(status='closed')
44-
if request_user.role == 'ADMIN':
45-
self.fields["lead"].queryset = Lead.objects.filter().exclude(
46-
status='closed').order_by('title')
47-
self.fields["contacts"].queryset = Contact.objects.filter()
48-
self.fields["teams"].choices = [(team.get('id'), team.get('name')) for team in Teams.objects.all().values('id', 'name')]
44+
if request_user.role == "ADMIN":
45+
self.fields["lead"].queryset = (
46+
Lead.objects.filter(company=request_obj.company)
47+
.exclude(status="closed")
48+
.order_by("title")
49+
)
50+
self.fields["contacts"].queryset = Contact.objects.filter(
51+
company=request_obj.company
52+
)
53+
self.fields["teams"].choices = [
54+
(team.get("id"), team.get("name"))
55+
for team in Teams.objects.filter(company=request_obj.company).values(
56+
"id", "name"
57+
)
58+
]
4959
self.fields["teams"].required = False
5060
else:
51-
self.fields["lead"].queryset = Lead.objects.filter(
52-
Q(assigned_to__in=[request_user]) | Q(created_by=request_user)).exclude(status='closed').order_by('title')
61+
self.fields["lead"].queryset = (
62+
Lead.objects.filter(
63+
Q(assigned_to__in=[request_user]) | Q(created_by=request_user)
64+
)
65+
.filter(company=request_obj.company)
66+
.exclude(status="closed")
67+
.order_by("title")
68+
)
5369
self.fields["contacts"].queryset = Contact.objects.filter(
54-
Q(assigned_to__in=[request_user]) | Q(created_by=request_user))
70+
Q(assigned_to__in=[request_user]) | Q(created_by=request_user)
71+
).filter(company=request_obj.company)
5572
self.fields["teams"].required = False
5673

57-
self.fields['assigned_to'].required = False
74+
self.fields["assigned_to"].required = False
5875
if account_view:
59-
self.fields['billing_address_line'].required = True
60-
self.fields['billing_street'].required = True
61-
self.fields['billing_city'].required = True
62-
self.fields['billing_state'].required = True
63-
self.fields['billing_postcode'].required = True
64-
self.fields['billing_country'].required = True
76+
self.fields["billing_address_line"].required = True
77+
self.fields["billing_street"].required = True
78+
self.fields["billing_city"].required = True
79+
self.fields["billing_state"].required = True
80+
self.fields["billing_postcode"].required = True
81+
self.fields["billing_country"].required = True
6582

6683
# lead is not mandatory while editing
6784
if self.instance.id:
68-
self.fields['lead'].required = False
69-
self.fields['lead'].required = False
85+
self.fields["lead"].required = False
86+
self.fields["lead"].required = False
7087

7188
class Meta:
7289
model = Account
73-
fields = ('name', 'phone', 'email', 'website', 'industry',
74-
'description', 'status', 'assigned_to',
75-
'billing_address_line', 'billing_street',
76-
'billing_city', 'billing_state',
77-
'billing_postcode', 'billing_country', 'lead', 'contacts')
90+
fields = (
91+
"name",
92+
"phone",
93+
"email",
94+
"website",
95+
"industry",
96+
"description",
97+
"status",
98+
"assigned_to",
99+
"billing_address_line",
100+
"billing_street",
101+
"billing_city",
102+
"billing_state",
103+
"billing_postcode",
104+
"billing_country",
105+
"lead",
106+
"contacts",
107+
)
78108

79109

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

83113
class Meta:
84114
model = Comment
85-
fields = ('comment', 'account', 'commented_by')
115+
fields = ("comment", "account", "commented_by")
86116

87117

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

91121
class Meta:
92122
model = Attachments
93-
fields = ('attachment', 'account')
123+
fields = ("attachment", "account")
94124

95125

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

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

111141
# self.fields['recipient'].required = False
112-
self.fields['from_email'].required = True
113-
self.fields['message_subject'].required = True
114-
self.fields['message_body'].required = True
115-
116-
self.fields['scheduled_date_time'].required = False
117-
self.fields['scheduled_later'].required = False
118-
self.fields['recipients'].required = True
119-
self.fields['recipients'].query = self.account_obj.contacts.all()
142+
self.fields["from_email"].required = True
143+
self.fields["message_subject"].required = True
144+
self.fields["message_body"].required = True
145+
146+
self.fields["scheduled_date_time"].required = False
147+
self.fields["scheduled_later"].required = False
148+
self.fields["recipients"].required = True
149+
self.fields["recipients"].query = self.account_obj.contacts.all()
120150
# self.fields['recipients'].choices = list((contact.get('id'), contact.get('email'))
121151
# for contact in self.account_obj.contacts.values('id', 'email'))
122152

123153
class Meta:
124154
model = Email
125-
fields = ['recipients', 'message_subject', 'from_email',
126-
'message_body', 'timezone', 'scheduled_date_time', 'scheduled_later']
155+
fields = [
156+
"recipients",
157+
"message_subject",
158+
"from_email",
159+
"message_body",
160+
"timezone",
161+
"scheduled_date_time",
162+
"scheduled_later",
163+
]
127164

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

139176
def clean_scheduled_date_time(self):
140-
scheduled_date_time = self.cleaned_data.get('scheduled_date_time')
141-
if self.data.get('scheduled_later') not in ['', None, False, 'false']:
142-
if scheduled_date_time in ['', None]:
143-
raise forms.ValidationError('This Field is required.')
177+
scheduled_date_time = self.cleaned_data.get("scheduled_date_time")
178+
if self.data.get("scheduled_later") not in ["", None, False, "false"]:
179+
if scheduled_date_time in ["", None]:
180+
raise forms.ValidationError("This Field is required.")
144181

145-
if self.data.get('scheduled_later') == 'true':
146-
if scheduled_date_time in ['', None]:
147-
raise forms.ValidationError('This Field is required.')
182+
if self.data.get("scheduled_later") == "true":
183+
if scheduled_date_time in ["", None]:
184+
raise forms.ValidationError("This Field is required.")
148185

149186
return scheduled_date_time
150187

151-
152188
def clean_message_body(self):
153-
message_body = self.cleaned_data.get('message_body')
189+
message_body = self.cleaned_data.get("message_body")
154190
count = 0
155191
for i in message_body:
156192
if i == "{":
157193
count += 1
158194
elif i == "}":
159195
count -= 1
160196
if count < 0:
161-
raise forms.ValidationError('Brackets do not match, Enter valid tags.')
197+
raise forms.ValidationError("Brackets do not match, Enter valid tags.")
162198
if count != 0:
163-
raise forms.ValidationError('Brackets do not match, Enter valid tags.')
199+
raise forms.ValidationError("Brackets do not match, Enter valid tags.")
164200
return message_body

Diff for: accounts/migrations/0011_account_company.py

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Generated by Django 2.2.10 on 2020-04-23 10:20
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('common', '0020_auto_20200409_1653'),
11+
('accounts', '0010_account_teams'),
12+
]
13+
14+
operations = [
15+
migrations.AddField(
16+
model_name='account',
17+
name='company',
18+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='common.Company'),
19+
),
20+
]

0 commit comments

Comments
 (0)