*Project structure:* apps ├── app_accounts │ ├── admin.py │ ├── apps.py │ ├── backends.py │ ├── forms.py │ ├── __init__.py │ ├── managers.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_auto_20160407_0938.py │ │ ├── __init__.py │ │ └── __pycache__ │ │ ├── 0001_initial.cpython-34.pyc │ │ ├── 0002_auto_20160407_0938.cpython-34.pyc │ │ └── __init__.cpython-34.pyc │ ├── models.py │ ├── __pycache__ │ │ ├── admin.cpython-34.pyc │ │ ├── apps.cpython-34.pyc │ │ ├── backends.cpython-34.pyc │ │ ├── forms.cpython-34.pyc │ │ ├── __init__.cpython-34.pyc │ │ ├── managers.cpython-34.pyc │ │ ├── models.cpython-34.pyc │ │ ├── signals.cpython-34.pyc │ │ ├── test_models.cpython-34.pyc │ │ ├── urls.cpython-34.pyc │ │ └── views.cpython-34.pyc │ ├── static │ │ └── app_accounts │ │ ├── css │ │ │ └── app_accounts.css │ │ ├── img │ │ └── js │ │ └── app_accounts.js │ ├── templates │ │ └── app_accounts │ │ ├── account_create.html │ │ ├── account_delete.html │ │ ├── account_detail.html │ │ ├── account_page.html │ │ ├── account_profile.html │ │ ├── account_update.html │ │ ├── app_accounts_skeleton.html │ │ ├── login.html │ │ ├── logout.html │ │ ├── password_change_done.html │ │ ├── password_change_form.html │ │ ├── password_reset_complete.html │ │ ├── password_reset_confirm.html │ │ ├── password_reset_done.html │ │ ├── password_reset_email.html │ │ └── password_reset_form.html │ ├── test_models.py │ ├── urls.py │ └── views.py ├── app_dictionaries │ ├── admin.py │ ├── apps.py │ ├── forms.py │ ├── __init__.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── __init__.py │ │ └── __pycache__ │ │ ├── 0001_initial.cpython-34.pyc │ │ └── __init__.cpython-34.pyc │ ├── models.py │ ├── __pycache__ │ │ ├── admin.cpython-34.pyc │ │ ├── apps.cpython-34.pyc │ │ ├── forms.cpython-34.pyc │ │ ├── __init__.cpython-34.pyc │ │ ├── managers.cpython-34.pyc │ │ ├── models.cpython-34.pyc │ │ ├── signals.cpython-34.pyc │ │ ├── urls.cpython-34.pyc │ │ └── views.cpython-34.pyc │ ├── static │ │ └── app_dictionaries │ │ ├── css │ │ │ └── app_dictionaries.css │ │ ├── images │ │ └── js │ │ └── app_dictionaries.js │ ├── templates │ │ └── app_dictionaries │ │ ├── app_dictionaries_skeleton.html │ │ ├── dictionary_detail.html │ │ ├── dictionary_list.html │ │ ├── modals_for_glossary.html │ │ ├── modals_for_programmer_dicts.html │ │ ├── modals_for_translator.html │ │ ├── programmer_dict_category_detail.html │ │ ├── sample_add_instruction_to_programmer_dict.html │ │ ├── sample_add_phrase_to_glossary.html │ │ ├── sample_add_phrase_to_translator.html │ │ ├── sample_all_glossaries.html │ │ ├── sample_all_programmer_dicts_categories.html │ │ ├── sample_all_programmer_dicts.html │ │ ├── sample_all_translators.html │ │ ├── sample_glossaries_for_import_phrases.html │ │ ├── sample_glossary_content_and_phrases.html │ │ ├── sample_instructions_programmer_dict.html │ │ ├── sample_phrases_glossary.html │ │ ├── sample_phrases_translator.html │ │ ├── sample_programmer_dict_content_and_instructions.html │ │ └── sample_translator_content_and_phrases.html │ ├── tests │ │ ├── __pycache__ │ │ │ ├── tests.cpython-34.pyc │ │ │ └── tests_live.cpython-34.pyc │ │ ├── tests_live.py │ │ └── tests.py │ ├── urls.py │ └── views.py ├── app_feedback │ ├── admin.py │ ├── apps.py │ ├── forms.py │ ├── __init__.py │ ├── migrations │ │ ├── __init__.py │ │ └── __pycache__ │ │ └── __init__.cpython-34.pyc │ ├── __pycache__ │ │ ├── admin.cpython-34.pyc │ │ ├── apps.cpython-34.pyc │ │ ├── forms.cpython-34.pyc │ │ ├── __init__.cpython-34.pyc │ │ ├── models.cpython-34.pyc │ │ ├── tests.cpython-34.pyc │ │ ├── urls.cpython-34.pyc │ │ └── views.cpython-34.pyc │ ├── static │ │ └── app_feedback │ │ ├── css │ │ │ └── app_feedback.css │ │ └── js │ │ └── app_feedback.js │ ├── templates │ │ └── app_feedback │ │ └── feedback.html │ ├── tests.py │ ├── urls.py │ └── views.py ├── app_polls │ ├── admin.py │ ├── apps.py │ ├── __init__.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_auto_20160314_1639.py │ │ ├── 0003_auto_20160316_1916.py │ │ ├── 0004_question_count_voters.py │ │ ├── 0005_auto_20160405_1756.py │ │ ├── __init__.py │ │ └── __pycache__ │ │ ├── 0001_initial.cpython-34.pyc │ │ ├── 0002_auto_20160314_1639.cpython-34.pyc │ │ ├── 0003_auto_20160316_1916.cpython-34.pyc │ │ ├── 0004_question_count_voters.cpython-34.pyc │ │ ├── 0005_auto_20160405_1756.cpython-34.pyc │ │ └── __init__.cpython-34.pyc │ ├── models.py │ ├── __pycache__ │ │ ├── admin.cpython-34.pyc │ │ ├── apps.cpython-34.pyc │ │ ├── __init__.cpython-34.pyc │ │ ├── managers.cpython-34.pyc │ │ ├── models.cpython-34.pyc │ │ ├── test_forms.cpython-34.pyc │ │ ├── test_models.cpython-34.pyc │ │ ├── tests.cpython-34.pyc │ │ ├── test_views.cpython-34.pyc │ │ ├── urls.cpython-34.pyc │ │ └── views.cpython-34.pyc │ ├── static │ │ └── app_polls │ │ ├── css │ │ │ └── app_polls.css │ │ ├── images │ │ └── js │ │ └── app_polls.js │ ├── templates │ │ └── app_polls │ │ ├── app_polls_skeleton.html │ │ ├── polls_results.html │ │ ├── sample_wrapper_for_poll.html │ │ └── sample_wrapper_for_poll_result.html │ ├── test_models.py │ ├── test_views.py │ ├── urls.py │ └── views.py └── app_privacy_policy ├── apps.py ├── __init__.py ├── migrations │ ├── __init__.py │ └── __pycache__ │ └── __init__.cpython-34.pyc ├── __pycache__ │ ├── apps.cpython-34.pyc │ ├── __init__.cpython-34.pyc │ ├── tests.cpython-34.pyc │ ├── urls.cpython-34.pyc │ └── views.cpython-34.pyc ├── static │ └── app_privacy_policy │ ├── css │ │ └── app_privacy_policy.css │ └── js │ └── app_privacy_policy.js ├── templates │ └── app_privacy_policy │ └── privacy_policy.html ├── tests.py ├── urls.py └── views.py
*Settings:* # Application definition DJANGO_APPS = [ # 'suit', 'django.contrib.admin.apps.SimpleAdminConfig', # disable auto-discovery 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.sites', 'django.contrib.admindocs', 'django.contrib.humanize', ] MY_APPS = [ 'mylabour.apps.MylabourConfig', # my template tags and filters 'apps.app_accounts.apps.AppAccountsConfig', 'apps.app_feedback.apps.AppFeedbackConfig', 'apps.app_dictionaries.apps.AppDictionariesConfig', 'apps.app_polls.apps.AppPollsConfig', 'apps.app_privacy_policy.apps.AppPrivacyPolicyConfig', ] THIRD_PARTY_APPS = [ 'nocaptcha_recaptcha', 'django_cleanup', 'easy_thumbnails', 'image_cropping', 'chartjs', 'django_nose', ] INSTALLED_APPS = DJANGO_APPS + MY_APPS + THIRD_PARTY_APPS MIDDLEWARE_CLASSES = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.contrib.admindocs.middleware.XViewMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', ] TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' *Command: *./manage.py test apps *Content apps/app_accounts/apps.py* from django.apps import AppConfig class AppAccountsConfig(AppConfig): name = 'apps.app_accounts' verbose_name = 'Application for accounts' *Content apps/app_accounts/models.py* import imghdr import string import datetime import collections from django.db import models from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin from django.core.urlresolvers import reverse from django.core.exceptions import ValidationError from django.core.validators import MinLengthValidator from django.conf import settings from django_countries.fields import CountryField from .managers import AccountUserManager from apps.app_dictionaries.models import ProgrammerDictCategory from mylabour.validators import Validator_UserName MIN_LENGTH = 8 class AccountUser(AbstractBaseUser, PermissionsMixin): """ Model for users, registering by email and unique name of account """ email = models.EmailField( 'Email of account', max_length=50, unique=True, error_messages={ 'unique': 'Account with this email already exists.', } ) name = models.CharField( 'Name of account', max_length=50, unique=True, validators=[ Validator_UserName, MinLengthValidator(MIN_LENGTH, 'Field must be at least {0} chars'.format(MIN_LENGTH)), ], error_messages={ 'unique': 'Account with this name already exists.' } ) is_active = models.BooleanField(default=True) date_joined = models.DateTimeField('Date joined', auto_now_add=True) objects = models.Manager() objects = AccountUserManager() USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['name'] class Meta: db_table = 'account_user' verbose_name = "AccountUser" verbose_name_plural = "AccountUsers" get_latest_by = 'date_joined' ordering = ['-date_joined'] def __str__(self): return '{0.email}'.format(self) def save(self, *args, **kwargs): super().save(*args, **kwargs) account = AccountUser.objects.get(email=self.email) if not hasattr(account, 'accountuserinfo'): AccountUserInfo.objects.create(account=account) def get_absolute_url(self): return reverse('app_accounts:account_detail', kwargs={'account_user_email': self.email}) def get_full_name(self): return '{0.name} ({0.email})'.format(self) def clean(self): if len(self.password) < MIN_LENGTH: raise ValidationError({ 'password': 'Length of password must be at least {0}'.format(MIN_LENGTH) }) if all(i in string.digits for i in self.password): raise ValidationError({ 'password': 'Your password can\'t be entirely numeric' }) def get_short_name(self): return '{0.email}'.format(self) @property def is_staff(self): return self.is_superuser def all_dictionaries_created_user(self): result = dict() count_translators = self.translators.count() if hasattr(self, 'translators') else 0 count_glossaries = self.glossaries.count() if hasattr(self, 'glossaries') else 0 count_programmer_dicts = self.programmer_dicts.count() if hasattr(self, 'programmer_dicts') else 0 result['count_translators'] = count_translators result['count_glossaries'] = count_glossaries result['count_programmer_dicts'] = count_programmer_dicts return result def last_created_dictionaries(self, types_dictionaries=['translators', 'glossaries']): result = list() for type_dictionary in types_dictionaries: if type_dictionary == 'translators': created_translators = self.translators.all()[:3] if created_translators: result.append('User have next translators: {0}'.format(created_translators)) else: result.append('User have not translators') if type_dictionary == 'glossaries': created_glossaries = self.glossaries.all()[:3] if created_glossaries: result.append('User have next glossaires: {0}'.format(created_glossaries)) else: result.append('User have not glossaires') return result def all_categories_with_programmer_dicts(self): all_category_programmer_dict = {category for category in ProgrammerDictCategory.objects.all()} result = dict.fromkeys(all_category_programmer_dict, list()) result = collections.defaultdict(list) for programmer_dict in self.programmer_dicts.all(): result[programmer_dict.category].append(programmer_dict) for i in all_category_programmer_dict: if i not in result.keys(): result[i] = list() return dict(result) *Content apps/app_accounts/test_models.py* from unittest import mock from django.test import TestCase from .models import AccountUser class Test_AccountUser(TestCase): """ Testing custom auth model AccountUser """ def setUp(self): pass def setUpTestData(self): self.account = AccountUser.objects.create(email='exam...@example.com', name='namename', password='1212323sdada') def test_erta(self): self.assertEqual(AccountUser.verbose_name, 'AccountUser') self.assertEqual(1, 2) *Error:* In [1]: !./manage.py test apps nosetests apps --verbosity=1 Creating test database for alias 'default'... .EEE ====================================================================== ERROR: Failure: RuntimeError (Model class app_accounts.models.AccountUser doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/nose/failure.py", line 39, in runTest raise self.exc_val.with_traceback(self.tb) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/nose/loader.py", line 418, in loadTestsFromName addr.filename, addr.module) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/nose/importer.py", line 47, in importFromPath return self.importFromDir(dir_path, fqname) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/nose/importer.py", line 94, in importFromDir mod = load_module(part_fqname, fh, filename, desc) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/imp.py", line 235, in load_module return load_source(name, filename, file) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/imp.py", line 171, in load_source module = methods.load() File "<frozen importlib._bootstrap>", line 1220, in load File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked File "<frozen importlib._bootstrap>", line 1129, in _exec File "<frozen importlib._bootstrap>", line 1448, in exec_module File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/project_PersonalDicts/apps/app_accounts/test_models.py", line 6, in <module> from .models import AccountUser File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/project_PersonalDicts/apps/app_accounts/models.py", line 24, in <module> class AccountUser(AbstractBaseUser, PermissionsMixin): File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/django/db/models/base.py", line 102, in __new__ "INSTALLED_APPS." % (module, name) RuntimeError: Model class app_accounts.models.AccountUser doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS. ====================================================================== ERROR: Failure: RuntimeError (Model class app_polls.models.Question doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/nose/failure.py", line 39, in runTest raise self.exc_val.with_traceback(self.tb) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/nose/loader.py", line 418, in loadTestsFromName addr.filename, addr.module) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/nose/importer.py", line 47, in importFromPath return self.importFromDir(dir_path, fqname) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/nose/importer.py", line 94, in importFromDir mod = load_module(part_fqname, fh, filename, desc) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/imp.py", line 235, in load_module return load_source(name, filename, file) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/imp.py", line 171, in load_source module = methods.load() File "<frozen importlib._bootstrap>", line 1220, in load File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked File "<frozen importlib._bootstrap>", line 1129, in _exec File "<frozen importlib._bootstrap>", line 1448, in exec_module File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/project_PersonalDicts/apps/app_polls/test_models.py", line 4, in <module> from .models import Question, Choice File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/project_PersonalDicts/apps/app_polls/models.py", line 11, in <module> class Question(models.Model): File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/django/db/models/base.py", line 102, in __new__ "INSTALLED_APPS." % (module, name) RuntimeError: Model class app_polls.models.Question doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS. ====================================================================== ERROR: Failure: RuntimeError (Model class app_polls.models.Question doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/nose/failure.py", line 39, in runTest raise self.exc_val.with_traceback(self.tb) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/nose/loader.py", line 418, in loadTestsFromName addr.filename, addr.module) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/nose/importer.py", line 47, in importFromPath return self.importFromDir(dir_path, fqname) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/nose/importer.py", line 94, in importFromDir mod = load_module(part_fqname, fh, filename, desc) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/imp.py", line 235, in load_module return load_source(name, filename, file) File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/imp.py", line 171, in load_source module = methods.load() File "<frozen importlib._bootstrap>", line 1220, in load File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked File "<frozen importlib._bootstrap>", line 1129, in _exec File "<frozen importlib._bootstrap>", line 1448, in exec_module File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/project_PersonalDicts/apps/app_polls/test_views.py", line 8, in <module> from .models import Question, Choice File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/project_PersonalDicts/apps/app_polls/models.py", line 11, in <module> class Question(models.Model): File "/home/wlysenko/.virtualenvs/virtual_PersonalDicts/lib/python3.4/site-packages/django/db/models/base.py", line 102, in __new__ "INSTALLED_APPS." % (module, name) RuntimeError: Model class app_polls.models.Question doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS. ---------------------------------------------------------------------- Ran 4 tests in 0.168s FAILED (errors=3) Destroying test database for alias 'default'... -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/0d0a4f68-f63e-4d4e-9eff-cc26df21d5f9%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.