2

I've been trying to solve this error for a week now and I can't seem to figure out how to fix this error. No one else who is using this repository is having the same problem as I am (I am up to date with the origin), so it has to be some sort of local issue, but I can't figure out what it would be. This happens everytime I try to run the django unit tests that we have written. There are no problems when I runserver or when I do migrations, only when testing: python manage.py test

_______ERROR MESSAGE:_________

Liams-MBP:GrammieGram Liam2$ python manage.py  test grams
Creating test database for alias 'default'...
Traceback (most recent call last):
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
psycopg2.ProgrammingError: relation "auth_user" does not exist


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/core/management/commands/test.py", line 29, in run_from_argv
    super(Command, self).run_from_argv(argv)
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/core/management/commands/test.py", line 62, in handle
    failures = test_runner.run_tests(test_labels)
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/test/runner.py", line 601, in run_tests
    old_config = self.setup_databases()
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/test/runner.py", line 546, in setup_databases
    self.parallel, **kwargs
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/test/utils.py", line 187, in setup_databases
    serialize=connection.settings_dict.get('TEST', {}).get('SERIALIZE', True),
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/db/backends/base/creation.py", line 69, in create_test_db
    run_syncdb=True,
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/core/management/__init__.py", line 131, in call_command
    return command.execute(*args, **defaults)
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 173, in handle
    self.sync_apps(connection, executor.loader.unmigrated_apps)
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 311, in sync_apps
    self.stdout.write("    Running deferred SQL...\n")
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/db/backends/base/schema.py", line 93, in __exit__
    self.execute(sql)
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/db/backends/base/schema.py", line 120, in execute
    cursor.execute(sql, params)
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/utils/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/Users/Liam2/anaconda3/lib/python3.6/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "auth_user" does not exist

My grams/models.py

from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
import datetime
import uuid
from django.contrib.postgres.fields import ArrayField
from django.db.models.signals import post_save
from django.dispatch import receiver



"""
@brief A class that describes a user profile.

@field user -  the username of the user
@field usertype - the type of user profile (sender/receiver)
@filed contacts - the user's contact book, list of people they can contact
@field admins - and a list of admins, list of users who have admin
                privileges over this Profile object
"""
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    usertype = models.CharField(max_length=30, default="sender")
    contacts = ArrayField(models.CharField(max_length=150, default="default"), default=[])
    admins = ArrayField(models.CharField(max_length=150, default="default"), default=[])

@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)


@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    instance.profile.save()


"""
@brief Describes a gram message that a sender type Profile is
       able to send to a receiver type Profile.

@field send_username - the username of the sender profile
@field recp_username - the username of the receiver profile
@field sent_time - the time at which the Gram object was sent
@field display_until - the amount of time the Gram object will be visible
"""
class Gram(models.Model):
    message = models.CharField(max_length=240)
    send_username = models.CharField(max_length=150, default="default")
    recp_username = models.CharField(max_length=150, default="default")
    sent_time = models.DateTimeField(null=True)
    display_until = models.DateTimeField(null=True)
    def __str__(self):
        return self.message

#function checks if another user can be added to the list of contacts
#active_user_type - logged in user; new_contact - the contact to be added
def validated_contact_add(active_user_type,new_contact):
    #check if the contact exists in the list of users
    if User.objects.filter(username=new_contact).exists():
        #check if the type of the logged in user is different from the one being added
        if active_user_type != Profile.objects.get(user=User.objects.get(username = new_contact)).usertype:
            return "valid"
        else:
            return "wrong type"
    else:
        return "does not exist"

_________THINGS I'VE TRIED TO RESOLVE THIS (but failed):_______________

ConfusedPerson
  • 327
  • 1
  • 2
  • 9

1 Answers1

3

Ok, so it turned out that some migrations were being skipped (?) when calling python manage.py makemigrations so I had to specify which app that I wanted to make migrations for. Calling python manage.py makemigrations grams (my target app name) fixed the problem.

ConfusedPerson
  • 327
  • 1
  • 2
  • 9
  • Yes, I've had the same issue and finally it solved when I've migrated one of the apps that was included in the project but which migrations does't performed automatically. – K. Stopa Oct 22 '19 at 10:21