from django.db import models
from django.contrib.auth.models import User

from util.session import get_or_generate_session_name

class Session(models.Model):
    name = models.CharField(max_length=255)
    user = models.ForeignKey(User, blank=True, null=True)
    started_at = models.DateTimeField('started at', auto_now_add=True)

    # On Python 3: def __str__(self):
    def __unicode__(self):
        return self.name

    def save(self, *args, **kwargs):
        existing_session_names = Session.objects.filter(name__startswith=self.UNTITLED_PREFIX, user=self.user).only('name')
        self.name = get_or_generate_session_name(self.name, existing_session_names)
        super(Session, self).save(*args, **kwargs) # Call the "real" save() method.


class Spec(models.Model):
    code = models.TextField()
    session = models.ForeignKey(Session)
    author = models.ForeignKey(User, verbose_name='The author of this last update.')
    tests_passed = models.NullBooleanField(default=False)
    saved_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        get_latest_by = 'saved_at'

from django.db import models
from django.contrib.auth.models import User

from util.session import get_or_generate_session_name
from util.session import DEFAULT_SESSION_NAME_PREFIX

class Session(models.Model):
    name = models.CharField(max_length=255)
    user = models.ForeignKey(User, blank=True, null=True)
    started_at = models.DateTimeField('started at', auto_now_add=True)

    # On Python 3: def __str__(self):
    def __unicode__(self):
        return self.name

    def save(self, *args, **kwargs):
        existing_session_names = Session.objects.filter(name__startswith=DEFAULT_SESSION_NAME_PREFIX, user=self.user).only('name')
        self.name = get_or_generate_session_name(self.name, existing_session_names)
        super(Session, self).save(*args, **kwargs) # Call the "real" save() method.


class Spec(models.Model):
    code = models.TextField()
    session = models.ForeignKey(Session)
    author = models.ForeignKey(User, verbose_name='The author of this last update.')
    tests_passed = models.NullBooleanField(default=False)
    saved_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        get_latest_by = 'saved_at'

Use the existing default name.
Use the existing default name.
  from django.db import models
  from django.contrib.auth.models import User
  
  from util.session import get_or_generate_session_name
+ from util.session import DEFAULT_SESSION_NAME_PREFIX
  
  class Session(models.Model):
      name = models.CharField(max_length=255)
      user = models.ForeignKey(User, blank=True, null=True)
      started_at = models.DateTimeField('started at', auto_now_add=True)
  
      # On Python 3: def __str__(self):
      def __unicode__(self):
          return self.name
  
      def save(self, *args, **kwargs):
-         existing_session_names = Session.objects.filter(name__startswith=self.UNTITLED_PREFIX, user=self.user).only('name')
+         existing_session_names = Session.objects.filter(name__startswith=DEFAULT_SESSION_NAME_PREFIX, user=self.user).only('name')
          self.name = get_or_generate_session_name(self.name, existing_session_names)
          super(Session, self).save(*args, **kwargs) # Call the "real" save() method.
  
  
  class Spec(models.Model):
      code = models.TextField()
      session = models.ForeignKey(Session)
      author = models.ForeignKey(User, verbose_name='The author of this last update.')
      tests_passed = models.NullBooleanField(default=False)
      saved_at = models.DateTimeField(auto_now_add=True)
  
      class Meta:
          get_latest_by = 'saved_at'
  
Use the existing default name.
## Code Before:
from django.db import models
from django.contrib.auth.models import User

from util.session import get_or_generate_session_name

class Session(models.Model):
    name = models.CharField(max_length=255)
    user = models.ForeignKey(User, blank=True, null=True)
    started_at = models.DateTimeField('started at', auto_now_add=True)

    # On Python 3: def __str__(self):
    def __unicode__(self):
        return self.name

    def save(self, *args, **kwargs):
        existing_session_names = Session.objects.filter(name__startswith=self.UNTITLED_PREFIX, user=self.user).only('name')
        self.name = get_or_generate_session_name(self.name, existing_session_names)
        super(Session, self).save(*args, **kwargs) # Call the "real" save() method.


class Spec(models.Model):
    code = models.TextField()
    session = models.ForeignKey(Session)
    author = models.ForeignKey(User, verbose_name='The author of this last update.')
    tests_passed = models.NullBooleanField(default=False)
    saved_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        get_latest_by = 'saved_at'

## Instruction:
Use the existing default name.
## Code After:
from django.db import models
from django.contrib.auth.models import User

from util.session import get_or_generate_session_name
from util.session import DEFAULT_SESSION_NAME_PREFIX

class Session(models.Model):
    name = models.CharField(max_length=255)
    user = models.ForeignKey(User, blank=True, null=True)
    started_at = models.DateTimeField('started at', auto_now_add=True)

    # On Python 3: def __str__(self):
    def __unicode__(self):
        return self.name

    def save(self, *args, **kwargs):
        existing_session_names = Session.objects.filter(name__startswith=DEFAULT_SESSION_NAME_PREFIX, user=self.user).only('name')
        self.name = get_or_generate_session_name(self.name, existing_session_names)
        super(Session, self).save(*args, **kwargs) # Call the "real" save() method.


class Spec(models.Model):
    code = models.TextField()
    session = models.ForeignKey(Session)
    author = models.ForeignKey(User, verbose_name='The author of this last update.')
    tests_passed = models.NullBooleanField(default=False)
    saved_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        get_latest_by = 'saved_at'
