Skip to content

Commit

Permalink
update fail login and minor improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrii Pryz committed Oct 8, 2015
1 parent 1cfdda1 commit 2ab0be6
Show file tree
Hide file tree
Showing 16 changed files with 124 additions and 45 deletions.
9 changes: 6 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# run - Run local server
run:
@make clean
@echo "--------------------------------------------------------------"
@echo " python3 manage.py runserver --setting=mysmile.settings.local "
@echo "=============================================================="
Expand All @@ -17,7 +18,7 @@ test:

# onetest - run one test
onetest:
@python manage.py test apps.preferences.tests.test_preferences.PreferencesTestCase --settings=mysmile.settings.local
@python3 manage.py test apps.pages.tests.test_model_page.PageTestCase --settings=mysmile.settings.local

# create fixture
fixture:
Expand All @@ -30,7 +31,7 @@ startapp:

# syncdb - Run syncdb
syncdb:
python3 manage.py syncdb --settings=mysmile.settings.local
python3 manage.py syncdb --noinput --settings=mysmile.settings.local

# migrate - Run makemigrations & migrate command simultaneously
migrate:
Expand All @@ -40,8 +41,10 @@ migrate:
# newdb - Create new empty database
newdb:
make syncdb
make migrate
echo "from django.contrib.auth.models import User; User.objects.create_superuser('test', 'myemail@domen.com', 'test')" | python3 manage.py shell
python manage.py createcachetable
make migrate
python3 manage.py loaddata preferences.json --settings=mysmile.settings.local

# DEPLOY
# clean - Clean all temporary files
Expand Down
9 changes: 8 additions & 1 deletion apps/admin/fail_login/models.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import datetime
from datetime import timedelta

from django.db import models
Expand All @@ -16,13 +17,19 @@ class FailLogin(models.Model):
"""
# ip = models.IPAddressField(default='0.0.0.0', verbose_name=_('IP'))
user = models.ForeignKey(User, editable = False, verbose_name=_('User'))
created_at = models.DateTimeField(auto_now_add=True)
created_at = models.DateTimeField(auto_now=True)

class Meta:
db_table = 'FailLogin'
verbose_name = _('Fail login')
verbose_name_plural = _('Fail logins')

# def save(self, *args, **kwargs):
# # update timestamps
# if not self.id:
# self.created_at = timezone.localtime(timezone.now())
# # self.modified = datetime.datetime.today()
# return super(FailLogin, self).save(*args, **kwargs)

def fl_logged_in(sender, user, request, **kwargs):
messages.add_message(request, messages.INFO, 'You last login was at '+ str(user.last_login))
Expand Down
25 changes: 14 additions & 11 deletions apps/pages/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from django.http import Http404
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _
from django.utils import timezone

import logging
logger = logging.getLogger(__name__) # Get an instance of a logger
Expand All @@ -19,7 +20,9 @@ def save_form_data(self, instance, data):
super(ImageField, self).save_form_data(instance, data)

def create_default_sortorder():
return Page.objects.all().aggregate(models.Max('sortorder'))['sortorder__max']+Page.SORTORDER_STEP
default_sortorder = Page.objects.all().aggregate(models.Max('sortorder'))['sortorder__max']
default_sortorder = default_sortorder + Page.SORTORDER_STEP if default_sortorder else Page.SORTORDER_STEP
return default_sortorder

class PagesManager(models.Manager):
def get_content(self, lang=None, slug=None):
Expand Down Expand Up @@ -62,7 +65,7 @@ class Page(models.Model):
SORTORDER_STEP = 10

slug = models.SlugField(unique=True, verbose_name=_('slug'))
color = models.CharField(max_length=500, default='#FDA132',
color = models.CharField(max_length=255, default='#FDA132',
help_text=_('Click once with the mouse to select \
a color, and then twice to save. TEMPORARY DISABLED IN NON-CLASSIC THEMES!'),
verbose_name=_('color'))
Expand Down Expand Up @@ -107,24 +110,24 @@ class Meta:

class Page_translation(models.Model):
page = models.ForeignKey(Page)
lang = models.CharField(max_length=500, choices=settings.LANGUAGES,
lang = models.CharField(max_length=255, choices=settings.LANGUAGES,
default=settings.LANGUAGES[0][0])
menu = models.CharField(max_length=500)
name = models.CharField(max_length=500, blank=True, null=True)
menu = models.CharField(max_length=255)
name = models.CharField(max_length=255, blank=True, null=True)
col_central = models.TextField(blank=False, null=False)
youtube = models.CharField(max_length=500, blank=True, null=True,
youtube = models.CharField(max_length=255, blank=True, null=True,
help_text=_('Link to youtube video. \
Max length url = 2048 characters'))
col_right = models.TextField(blank=True, null=True)
col_bottom_1 = models.TextField(blank=True, null=True)
col_bottom_2 = models.TextField(blank=True, null=True)
col_bottom_3 = models.TextField(blank=True, null=True)

meta_title = models.CharField(max_length=500)
meta_description = models.CharField(max_length=500)
meta_keywords = models.CharField(max_length=500)
photo_alt = models.CharField(max_length=500, blank=True, null=True)
photo_description = models.CharField(max_length=500, blank=True, null=True)
meta_title = models.CharField(max_length=255)
meta_description = models.CharField(max_length=255)
meta_keywords = models.CharField(max_length=255)
photo_alt = models.CharField(max_length=255, blank=True, null=True)
photo_description = models.CharField(max_length=255, blank=True, null=True)

created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
Expand Down
22 changes: 19 additions & 3 deletions apps/pages/tests/test_model_page.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import datetime
from django.test import TestCase

from django.utils import timezone

from apps.pages.models import Page


Expand All @@ -9,8 +11,22 @@ class PageTestCase(TestCase):
def setUp(self):
pass

def test_photo_thumb(self):
pass
def test_page_field_created_at(self):
p = Page.objects.create(
slug='slug',
color='#FDA132',
photo='images/photo.png',
status=Page.STATUS_PUBLISHED,
ptype=Page.PTYPE_MENU)
p.save()
# local = timezone.localtime(timezone.now())
local = timezone.now()
created_at = p.created_at
print('created_at -- ', created_at)
print('local -- ', local)
delta = (local-created_at).total_seconds() # in seconds
print('delta --- ', delta)
self.assertTrue(delta<5)



24 changes: 12 additions & 12 deletions apps/preferences/fixtures/preferences.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
"model": "preferences.preferences",
"pk": 1,
"fields": {
"name": "Phone number",
"description": "Contact phone number. It is visible on the top of site \r\npage.",
"updated_at": "2015-03-01T14:12:49.481Z",
"key": "PHONE",
"created_at": "2015-02-20T09:29:37Z",
"value": "000 000 000 00 00"
"name": "Theme switcher",
"description": "Choose a theme for switch",
"updated_at": "2015-10-05T08:45:16.308Z",
"key": "THEME",
"created_at": "2015-05-20T09:29:37Z",
"value": "modern"
}
},
{
Expand Down Expand Up @@ -87,12 +87,12 @@
"model": "preferences.preferences",
"pk": 8,
"fields": {
"name": "Theme switcher",
"description": "Choose a theme for switch",
"updated_at": "2015-10-05T08:45:16.308Z",
"key": "THEME",
"created_at": "2015-05-20T09:29:37Z",
"value": "modern"
"name": "Phone number",
"description": "Contact phone number. It is visible on the top of site \r\npage.",
"updated_at": "2015-03-01T14:12:49.481Z",
"key": "PHONE",
"created_at": "2015-02-20T09:29:37Z",
"value": "000 000 000 00 00"
}
},
{
Expand Down
8 changes: 4 additions & 4 deletions apps/preferences/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,10 @@ class Preferences(models.Model):
{'key': KEY_IMAGE_AUTOSCALE, 'value': True,
'name': 'Image autoscale', 'description': 'Global setting for autoscale uploaded pictures if its width>333px. Pictures will be scaled to width=333px.'},)

key = models.CharField(unique=True, max_length=500, verbose_name=_('key'))
value = models.CharField(blank=True, null=True, max_length=500, verbose_name=_('value'))
name = models.CharField(max_length=500, verbose_name=_('name'))
description = models.CharField(max_length=500, verbose_name=_('description'))
key = models.CharField(unique=True, max_length=255, verbose_name=_('key'))
value = models.CharField(blank=True, null=True, max_length=255, verbose_name=_('value'))
name = models.CharField(max_length=255, verbose_name=_('name'))
description = models.CharField(max_length=255, verbose_name=_('description'))
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
objects = PreferencesManager()
Expand Down
2 changes: 1 addition & 1 deletion apps/utils/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def clear_cache(sender, instance=None, created=False, **kwargs):
if sender.__name__=='Preferences':
try:
settings.MYSMILE_THEME = Preferences.objects.filter(key='THEME').values_list('value', flat=True)[0]
except Exception as err:
except (IndexError, Exception) as err:
settings.MYSMILE_THEME = 'modern'
logger.error(err)

Expand Down
18 changes: 14 additions & 4 deletions config/local.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,10 @@

COMPRESS_ENABLED = False

DEBUG_TOOLBAR_PATCH_SETTINGS = True
DEBUG_TOOLBAR_PATCH_SETTINGS = False

SECRET_KEY = '=)1+x0_f%6t&$4gftv-^^w20kr)+1ut8js0@0(gt6cx8z6kxlc'

# Database
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
Expand All @@ -24,6 +21,19 @@
}
}

# uncomment for use MySql
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.mysql',
# 'NAME': 'mysmile',
# 'USER': 'root',
# 'PASSWORD': '',
# 'HOST': '127.0.0.1',
# 'PORT': '3306',
# }
# }


ALLOWED_HOSTS = ['127.0.0.1', 'localhost']

# Enter path to media folder
Expand Down
5 changes: 1 addition & 4 deletions config/production.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,10 @@

COMPRESS_ENABLED = True

DEBUG_TOOLBAR_PATCH_SETTINGS = False
DEBUG_TOOLBAR_PATCH_SETTINGS = DEBUG

SECRET_KEY = ''

# Database
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
Expand Down
36 changes: 36 additions & 0 deletions docs/source/Frequently Asked Questions.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
.. _faq:

**************************
Frequently Asked Questions
**************************

**Can I use the MySql database instead of SQLite?**

Yes. To do this, do the following:

#. Run :command:`$ pip3 install pymysql==0.6.7`
#. Add into *manage.py* lines ::
import pymysql
pymysql.install_as_MySQLdb()

befor line ::
if __name__ == "__main__":
#. Set Django DATABASES settings in *config/local.py* like ::
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysmile',
'USER': 'root',
'PASSWORD': 'password',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}

#. Create database *mysmile*

#. Run command :command:`$ make newdb`

#. Run local server :command:`$ make run`

1 change: 1 addition & 0 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ Contents:
Technical Specification/index
Themes/index
REST API/index
Frequently Asked Questions
glossary
5 changes: 4 additions & 1 deletion manage.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
import os
import sys

# uncomment for use MySql
# import pymysql
# pymysql.install_as_MySQLdb()

if __name__ == "__main__":

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysmile.settings.local")

from django.core.management import execute_from_command_line
Expand Down
Binary file modified mysmile/db/mysmile.sqlite3
Binary file not shown.
Binary file modified mysmile/media/images/photo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions mysmile/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,3 +174,5 @@

},
}

USE_ETAGS = True
3 changes: 2 additions & 1 deletion mysmile/settings/production.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@
'apps.utils.middlewares.AdminLocaleOneLangMiddleware',
)


THIRD_PARTY_MIDDLEWARE_CLASSES = (
'debug_toolbar.middleware.DebugToolbarMiddleware',
)
) if DEBUG==True else ()

MIDDLEWARE_CLASSES = DJANGO_MIDDLEWARE_CLASSES + \
APP_MIDDLEWARE_CLASSES + \
Expand Down

0 comments on commit 2ab0be6

Please sign in to comment.