Hello,

python manage.py syncdb failed for me, saying: there is no such table
auth_group. On closer examination, the error stack mentioned one of my
models: timewriting.

After commenting 5 lines of code: tada... syncdb worked!

However, I do not understand, and I am interested in: why ?

Wim

-----
My code (problematic lines are commented):

from datetime import datetime, date

from django.db import models
from django.db.models import Q
from django.contrib.auth.models import User, Group
from django.conf import settings

if hasattr(settings, 'TIMEWRITING_MINUTES_LIST'):
    MINUTES_LIST = settings.TIMEWRITING_MINUTES_LIST
else:
    MINUTES_LIST = (
        (0, '0'),
        (15, '15'),
        (30, '30'),
        (45, '45'),
    )

HOURS_LIST = [(item, unicode(item)) for item in xrange(0, 24)]

PROJECT_TYPE_LIST = (
    ('project', 'Project'),
    ('leave', 'Verlof'),
    ('illness', 'Ziekte'),
)

# TIMEWRITING_GROUP_ID = 5
# TIMEWRITING_GROUP = Group.objects.get(id=TIMEWRITING_GROUP_ID)

def format_hours(hours, minutes):
    return '%d:%02d' % (hours, minutes)

def format_minutes(minutes):
    hours = minutes // 60
    minutes = minutes % 60
    return format_hours(hours, minutes)

# def get_timewriting_users():
#    return User.objects.filter(is_active=True,
groups__id=TIMEWRITING_GROUP_ID).exclude(username='estrate')

class ProjectManager(models.Manager):
    def visible(self):
        return self.filter((Q(finished_at__isnull=True)|Q
(finished_at__gte=date.today())), is_active=True,
started_at__lte=date.today())

    def for_user(self, user):
        return self.visible().filter((Q(allow_all_users=True)|Q
(allowed_users=user)))

class Project(models.Model):
    name = models.CharField('naam', max_length=200)
    short_name = models.CharField('korte naam', max_length=25,
unique=True, help_text='Korte, unieke naam om te gebruiken in
overzichten.')
    description = models.TextField('omschrijving', blank=True,
help_text='Optioneel')
    confirm_term = models.PositiveIntegerField('bevestigingstermijn',
default=30, help_text='Aantal dagen waarna gebruikers een herinnering
krijgen om geschreven uren te bevestigen (0=nooit).')
    type = models.CharField('type', max_length=25, default='project',
choices=PROJECT_TYPE_LIST, help_text='Verlof en ziekte kunnen ook als
"projecten" worden ingevoerd zodat de gebruiker hier uren op kan
schrijven.')
    started_at = models.DateField('gestart op', default=date.today,
db_index=True, help_text='Vanaf deze dag kan men urenschrijven op dit
project. Als de startdatum later wordt verlegd zullen reeds geschreven
uren NIET worden gewist.')
    finished_at = models.DateField(u'be\xebindigd op', null=True,
blank=True, db_index=True, help_text='Tot en met deze dag kan men
urenschrijven op dit project. Als de begindatum later wordt verlegd
zullen reeds geschreven uren NIET worden gewist. Laat dit veld leeg
als er geen einddatum bekend is of indien niet van toepassing.')
    is_active = models.BooleanField('is geactiveerd', default=True,
db_index=True, help_text='Met dit veld kan een project (tijdelijk)
worden afgesloten voor het schrijven van nieuwe uren, ongeacht de
start- en einddatum.')
    allow_all_users = models.BooleanField('open voor alle gebruikers',
default=True, db_index=True, help_text='Vink dit aan indien alle
gebruikers die uren mogen schrijven, op dit project uren kunnen
schrijven. Indien dit is uitgevinkt dan kunnen alleen de gebruikers
urenschrijven die zijn geselecteerd bij "toegestane gebruikers".')
    allowed_users = models.ManyToManyField(User,
verbose_name='toegestane gebruikers', db_index=True, blank=True)

    objects = ProjectManager()

    class Meta:
        verbose_name = 'project'
        verbose_name_plural = 'projecten'
        ordering = ('short_name',)

    def __unicode__(self):
        return self.short_name

class WorkDayManager(models.Manager):
    def unconfirmed(self):
        return self.filter(is_confirmed=False)

    def confirmed(self):
        return self.filter(is_confirmed=True)


class WorkDay(models.Model):
    date = models.DateField('datum', default=date.today, help_text='De
datum van deze werkdag voor de aangegeven gebruiker.', db_index=True)
    user = models.ForeignKey(User, verbose_name='gebruiker',
db_index=True)
    is_confirmed = models.BooleanField('is bevestigd', default=False,
db_index=True)
    confirmed_at = models.DateTimeField('bevestigd op', null=True,
blank=True, editable=False)

    objects = WorkDayManager()

    class Meta:
        verbose_name = 'werkdag'
        verbose_name_plural = 'werkdagen'
        ordering = ('-date',)
        unique_together = (('date', 'user'),)

    def __unicode__(self):
        return u'%s %s' % (self.date, self.user)

    def save(self, *args, **kwargs):
        if self.is_confirmed and not self.confirmed_at:
             self.confirmed_at = datetime.now()
        else:
            self.confirmed_at = None
        super(WorkDay, self).save(*args, **kwargs)

    def total_minutes(self):
        minutes = 0
        for item in self.task_set.visible():
            minutes += item.calculated_minutes
        return minutes

    def total_formatted_hours(self):
        return format_minutes(self.total_minutes())

class TaskManager(models.Manager):
    def visible(self):
        return self.filter(is_trashed=False)

    def unconfirmed(self):
        return self.visible().filter(workday__is_confirmed=False)

class Task(models.Model):
    project = models.ForeignKey(Project, verbose_name='project',
db_index=True)
    workday = models.ForeignKey(WorkDay, verbose_name='werkdag',
db_index=True)
    hours = models.PositiveIntegerField('uren', default=0,
choices=HOURS_LIST)
    minutes = models.PositiveIntegerField('minutes', default=0,
choices=MINUTES_LIST)
    calculated_minutes = models.PositiveIntegerField('calculated
minutes', default=0, editable=False)
    description = models.CharField('omschrijving', max_length=200,
blank=True)
    is_trashed = models.BooleanField('verwijderd', default=False,
db_index=True, help_text='Vink dit aan om de taak te verwijderen uit
de overzichten en totalen.')
    created_at = models.DateTimeField('aangemaakt op',
default=datetime.now, editable=False)
    modified_at = models.DateTimeField('aangepast op',
default=datetime.now, editable=False)

    objects = TaskManager()

    class Meta:
        verbose_name = 'taak'
        verbose_name_plural = 'taken'
        permissions = (
            ("view_others_data", "Mag uren van anderen inzien"),
        )

    def __unicode__(self):
        return u'%s %s' % (self.project, self.workday)

    def save(self, *args, **kwargs):
        self.modified_at = datetime.now()
        self.calculated_minutes = (int(self.hours) * 60) + int
(self.minutes)
        super(Task, self).save(*args, **kwargs)

    def formatted_hours(self):
        return format_hours(self.hours, self.minutes)


----
dja...@wim-fujitsu:/var/projects/vmbobouwtechniek/code$ python
manage.py syncdb
Traceback (most recent call last):
  File "manage.py", line 18, in <module>
    execute_manager(settings)
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/core/
management/__init__.py", line 361, in execute_manager
    utility.execute()
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/core/
management/__init__.py", line 306, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/core/
management/base.py", line 192, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/core/
management/base.py", line 218, in execute
    self.validate()
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/core/
management/base.py", line 246, in validate
    num_errors = get_validation_errors(s, app)
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/core/
management/validation.py", line 28, in get_validation_errors
    for (app_name, error) in get_app_errors().items():
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/
models/loading.py", line 128, in get_app_errors
    self._populate()
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/
models/loading.py", line 57, in _populate
    self.load_app(app_name, True)
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/
models/loading.py", line 72, in load_app
    mod = __import__(app_name, {}, {}, ['models'])
  File "/var/projects/vmbobouwtechniek/code/site-packages/
vmbobouwtechniek/timewriting/models.py", line 28, in <module>
    TIMEWRITING_GROUP = Group.objects.get(id=5)
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/
models/manager.py", line 117, in get
    return self.get_query_set().get(*args, **kwargs)
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/
models/query.py", line 317, in get
    num = len(clone)
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/
models/query.py", line 173, in __len__
    self._result_cache = list(self.iterator())
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/
models/query.py", line 288, in iterator
    for row in self.query.results_iter():
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/
models/sql/query.py", line 205, in results_iter
    for rows in self.execute_sql(MULTI):
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/
models/sql/query.py", line 1820, in execute_sql
    cursor.execute(sql, params)
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/
backends/util.py", line 19, in execute
    return self.cursor.execute(sql, params)
  File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/
backends/sqlite3/base.py", line 170, in execute
    return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such table: auth_group

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to