Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1.0beta3 #439

Merged
merged 1 commit into from Apr 18, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 1 addition & 3 deletions accounts/models.py
Expand Up @@ -70,14 +70,12 @@ class Account(models.Model):
assigned_to = models.ManyToManyField(User, related_name="account_assigned_users")
teams = models.ManyToManyField(Teams, related_name="account_teams")


class Meta:
ordering = ["-created_on"]

def __str__(self):
return self.name


def get_complete_address(self):
"""Concatenates complete address."""
address = ""
Expand Down
106 changes: 67 additions & 39 deletions common/migrations/0027_auto_20210418_1112.py
Expand Up @@ -8,73 +8,101 @@
class Migration(migrations.Migration):

dependencies = [
('common', '0026_auto_20210325_1923'),
("common", "0026_auto_20210325_1923"),
]

operations = [
migrations.AlterField(
model_name='address',
name='address_line',
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Address'),
model_name="address",
name="address_line",
field=models.CharField(
blank=True, default="", max_length=255, verbose_name="Address"
),
),
migrations.AlterField(
model_name='address',
name='city',
field=models.CharField(blank=True, default='', max_length=255, verbose_name='City'),
model_name="address",
name="city",
field=models.CharField(
blank=True, default="", max_length=255, verbose_name="City"
),
),
migrations.AlterField(
model_name='address',
name='postcode',
field=models.CharField(blank=True, default='', max_length=64, verbose_name='Post/Zip-code'),
model_name="address",
name="postcode",
field=models.CharField(
blank=True, default="", max_length=64, verbose_name="Post/Zip-code"
),
),
migrations.AlterField(
model_name='address',
name='state',
field=models.CharField(blank=True, default='', max_length=255, verbose_name='State'),
model_name="address",
name="state",
field=models.CharField(
blank=True, default="", max_length=255, verbose_name="State"
),
),
migrations.AlterField(
model_name='address',
name='street',
field=models.CharField(blank=True, default='', max_length=55, verbose_name='Street'),
model_name="address",
name="street",
field=models.CharField(
blank=True, default="", max_length=55, verbose_name="Street"
),
),
migrations.AlterField(
model_name='apisettings',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='settings_created_by', to=settings.AUTH_USER_MODEL),
model_name="apisettings",
name="created_by",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="settings_created_by",
to=settings.AUTH_USER_MODEL,
),
),
migrations.AlterField(
model_name='apisettings',
name='title',
model_name="apisettings",
name="title",
field=models.TextField(),
),
migrations.AlterField(
model_name='attachments',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='attachment_created_by', to=settings.AUTH_USER_MODEL),
model_name="attachments",
name="created_by",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="attachment_created_by",
to=settings.AUTH_USER_MODEL,
),
),
migrations.AlterField(
model_name='company',
name='address',
field=models.TextField(blank=True, default=''),
model_name="company",
name="address",
field=models.TextField(blank=True, default=""),
),
migrations.AlterField(
model_name='company',
name='name',
field=models.CharField(blank=True, default='', max_length=100),
model_name="company",
name="name",
field=models.CharField(blank=True, default="", max_length=100),
),
migrations.AlterField(
model_name='document',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='document_uploaded', to=settings.AUTH_USER_MODEL),
model_name="document",
name="created_by",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="document_uploaded",
to=settings.AUTH_USER_MODEL,
),
),
migrations.AlterField(
model_name='document',
name='title',
field=models.TextField(blank=True, default=''),
model_name="document",
name="title",
field=models.TextField(blank=True, default=""),
),
migrations.AlterField(
model_name='google',
name='google_url',
field=models.TextField(default=''),
model_name="google",
name="google_url",
field=models.TextField(default=""),
),
]
11 changes: 6 additions & 5 deletions common/models.py
Expand Up @@ -86,14 +86,16 @@ def __str__(self):
return self.email




class Address(models.Model):
address_line = models.CharField(_("Address"), max_length=255, blank=True, default="")
address_line = models.CharField(
_("Address"), max_length=255, blank=True, default=""
)
street = models.CharField(_("Street"), max_length=55, blank=True, default="")
city = models.CharField(_("City"), max_length=255, blank=True, default="")
state = models.CharField(_("State"), max_length=255, blank=True, default="")
postcode = models.CharField(_("Post/Zip-code"), max_length=64, blank=True, default="")
postcode = models.CharField(
_("Post/Zip-code"), max_length=64, blank=True, default=""

Choose a reason for hiding this comment

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

null=True on a string field causes inconsistent data types because the value can be either str or None. This adds complexity and maybe bugs, but can be solved by replacing null=True with default="".

)
country = models.CharField(max_length=3, choices=COUNTRIES, blank=True, null=True)

def __str__(self):
Expand Down Expand Up @@ -381,7 +383,6 @@ def file_type(self):
return ("file", "fa fa-file")
return ("file", "fa fa-file")


@property
def get_team_users(self):
team_user_ids = list(self.teams.values_list("users__id", flat=True))
Expand Down
1 change: 0 additions & 1 deletion contacts/models.py
Expand Up @@ -38,7 +38,6 @@ class Meta:
def created_on_arrow(self):
return arrow.get(self.created_on).humanize()


@property
def get_team_users(self):
team_user_ids = list(self.teams.values_list("users__id", flat=True))
Expand Down
2 changes: 1 addition & 1 deletion crm/settings.py
Expand Up @@ -240,4 +240,4 @@
SECURE_HSTS_PRELOAD = True
SECURE_CONTENT_TYPE_NOSNIFF = True

DEFAULT_AUTO_FIELD='django.db.models.AutoField'
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"

Choose a reason for hiding this comment

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

Suggested change
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"
SECURE_SSL_REDIRECT = os.getenv("SECURE_SSL_REDIRECT_ENABLED") != "False"
SESSION_COOKIE_SECURE = os.getenv("SESSION_COOKIE_SECURE_ENABLED") != "False"

Consider setting SECURE_SSL_REDIRECT to prevent users from accessing the website over HTTP. HTTP connections allow bad actors to intercept passwords and session cookies, and to easily change the contents of the request or response.

Consider setting SESSION_COOKIE_SECURE to prevent cookies from being sent over non HTTPS connections. Cookies sent over insecure HTTP connections can be intercepted by hackers.

2 changes: 1 addition & 1 deletion emails/models.py
Expand Up @@ -17,6 +17,6 @@ class Email(models.Model):

class Meta:
ordering = ["-id"]

def __str__(self):
return self.subject
6 changes: 2 additions & 4 deletions invoices/models.py
Expand Up @@ -88,16 +88,14 @@ def save(self, *args, **kwargs):
prev_invoice_number=self.invoice_number
)
super(Invoice, self).save(*args, **kwargs)

def invoice_id_generator(self, prev_invoice_number=None):
if prev_invoice_number:
prev_invoice_number += 1
return prev_invoice_number
date = datetime.datetime.now().strftime("%d%m%Y")
return int(date + "0001")



def formatted_total_amount(self):
return self.currency + " " + str(self.total_amount)

Expand Down Expand Up @@ -229,7 +227,7 @@ def __str__(self):

class Meta:
ordering = ("created_on",)

def formatted_total_amount(self):
return self.currency + " " + str(self.total_amount)

Expand Down
3 changes: 1 addition & 2 deletions teams/models.py
Expand Up @@ -20,11 +20,10 @@ class Teams(models.Model):

class Meta:
ordering = ("id",)

def __str__(self):
return self.name


@property
def created_on_arrow(self):
return arrow.get(self.created_on).humanize()
Expand Down