rename accounts.models, reset migrations
This commit is contained in:
parent
478c33bb00
commit
426d91aee3
|
@ -1,6 +1,6 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from accounts.models import PonyConfSpeaker, PonyConfUser
|
from accounts.models import Profile, Speaker
|
||||||
|
|
||||||
admin.site.register(PonyConfUser)
|
admin.site.register(Profile) # FIXME extend user admin
|
||||||
admin.site.register(PonyConfSpeaker)
|
admin.site.register(Speaker)
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.forms.models import modelform_factory
|
from django.forms.models import modelform_factory
|
||||||
|
|
||||||
from .models import PonyConfUser
|
from .models import Profile
|
||||||
|
|
||||||
__all__ = ['ProfileForm', 'PonyConfUserForm']
|
__all__ = ['UserForm', 'ProfileForm']
|
||||||
|
|
||||||
|
|
||||||
ProfileForm = modelform_factory(User, fields=['first_name', 'last_name', 'email', 'username'])
|
UserForm = modelform_factory(User, fields=['first_name', 'last_name', 'email', 'username'])
|
||||||
|
|
||||||
PonyConfUserForm = modelform_factory(PonyConfUser, fields=['biography'])
|
ProfileForm = modelform_factory(Profile, fields=['biography'])
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Generated by Django 1.9.7 on 2016-06-11 12:23
|
# Generated by Django 1.9.7 on 2016-06-12 15:10
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import django.db.models.deletion
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
import django.contrib.sites.managers
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
import django.db.models.manager
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
@ -13,15 +15,37 @@ class Migration(migrations.Migration):
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
('sites', '0002_alter_domain_unique'),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='PonyConfUser',
|
name='Profile',
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('biography', models.TextField(blank=True, verbose_name='Biography')),
|
('biography', models.TextField(blank=True, verbose_name='Biography')),
|
||||||
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Speaker',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('arrival', models.DateTimeField(blank=True, null=True)),
|
||||||
|
('departure', models.DateTimeField(blank=True, null=True)),
|
||||||
|
('transport', models.IntegerField(blank=True, choices=[(1, 'train'), (2, 'plane')], null=True)),
|
||||||
|
('connector', models.IntegerField(blank=True, choices=[(1, 'VGA'), (2, 'HDMI'), (3, 'miniDP')], null=True)),
|
||||||
|
('constraints', models.TextField()),
|
||||||
|
('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
|
||||||
|
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||||
|
],
|
||||||
|
managers=[
|
||||||
|
('objects', django.db.models.manager.Manager()),
|
||||||
|
('on_site', django.contrib.sites.managers.CurrentSiteManager()),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='speaker',
|
||||||
|
unique_together=set([('site', 'user')]),
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Generated by Django 1.9.7 on 2016-06-11 13:05
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import django.contrib.sites.managers
|
|
||||||
import django.db.models.deletion
|
|
||||||
import django.db.models.manager
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('sites', '0002_alter_domain_unique'),
|
|
||||||
('accounts', '0001_initial'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='PonyConfSpeaker',
|
|
||||||
fields=[
|
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('arrival', models.DateTimeField(blank=True, null=True)),
|
|
||||||
('departure', models.DateTimeField(blank=True, null=True)),
|
|
||||||
('transport', models.IntegerField(blank=True, choices=[(1, 'train'), (2, 'plane')], null=True)),
|
|
||||||
('connector', models.IntegerField(blank=True, choices=[(1, 'VGA'), (2, 'HDMI'), (3, 'miniDP')], null=True)),
|
|
||||||
('constraints', models.TextField()),
|
|
||||||
('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
|
|
||||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='accounts.PonyConfUser')),
|
|
||||||
],
|
|
||||||
managers=[
|
|
||||||
('objects', django.db.models.manager.Manager()),
|
|
||||||
('on_site', django.contrib.sites.managers.CurrentSiteManager()),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.AlterUniqueTogether(
|
|
||||||
name='ponyconfspeaker',
|
|
||||||
unique_together=set([('site', 'user')]),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -1,22 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Generated by Django 1.9.7 on 2016-06-12 14:21
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import django.db.models.deletion
|
|
||||||
from django.conf import settings
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('accounts', '0002_auto_20160611_1305'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='ponyconfspeaker',
|
|
||||||
name='user',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -5,20 +5,20 @@ from django.contrib.sites.managers import CurrentSiteManager
|
||||||
from django.contrib.sites.models import Site
|
from django.contrib.sites.models import Site
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
__all__ = ['PonyConfUser', 'PonyConfSpeaker']
|
__all__ = ['Profile', 'Speaker']
|
||||||
|
|
||||||
|
|
||||||
def enum_to_choices(enum):
|
def enum_to_choices(enum):
|
||||||
return ((item.value, item.name) for item in list(enum))
|
return ((item.value, item.name) for item in list(enum))
|
||||||
|
|
||||||
|
|
||||||
class PonyConfUser(models.Model):
|
class Profile(models.Model):
|
||||||
|
|
||||||
user = models.OneToOneField(User)
|
user = models.OneToOneField(User)
|
||||||
biography = models.TextField(blank=True, verbose_name='Biography')
|
biography = models.TextField(blank=True, verbose_name='Biography')
|
||||||
|
|
||||||
|
|
||||||
class PonyConfSpeaker(models.Model):
|
class Speaker(models.Model):
|
||||||
|
|
||||||
TRANSPORTS = IntEnum('Transport', 'train plane')
|
TRANSPORTS = IntEnum('Transport', 'train plane')
|
||||||
CONNECTORS = IntEnum('Connector', 'VGA HDMI miniDP')
|
CONNECTORS = IntEnum('Connector', 'VGA HDMI miniDP')
|
||||||
|
@ -42,8 +42,8 @@ class PonyConfSpeaker(models.Model):
|
||||||
return self.user.get_full_name() or self.user.username
|
return self.user.get_full_name() or self.user.username
|
||||||
|
|
||||||
|
|
||||||
def create_ponyconfuser(sender, instance, created, **kwargs):
|
def create_profile(sender, instance, created, **kwargs):
|
||||||
if created:
|
if created:
|
||||||
PonyConfUser.objects.create(user=instance)
|
Profile.objects.create(user=instance)
|
||||||
|
|
||||||
models.signals.post_save.connect(create_ponyconfuser, sender=User, weak=False, dispatch_uid='create_ponyconfuser')
|
models.signals.post_save.connect(create_profile, sender=User, weak=False, dispatch_uid='create_profile')
|
||||||
|
|
|
@ -2,7 +2,7 @@ from django.contrib.auth.models import User
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
from .models import PonyConfUser
|
from .models import Profile
|
||||||
|
|
||||||
ROOT_URL = 'accounts'
|
ROOT_URL = 'accounts'
|
||||||
|
|
||||||
|
@ -14,8 +14,8 @@ class AccountTests(TestCase):
|
||||||
|
|
||||||
# MODELS
|
# MODELS
|
||||||
|
|
||||||
def test_create_ponyconfuser(self):
|
def test_create_profile(self):
|
||||||
self.assertEqual(PonyConfUser.objects.count(), 2)
|
self.assertEqual(Profile.objects.count(), 2)
|
||||||
|
|
||||||
# VIEWS
|
# VIEWS
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ class AccountTests(TestCase):
|
||||||
# User b wants to update its username, email and biography
|
# User b wants to update its username, email and biography
|
||||||
user = User.objects.get(username='b')
|
user = User.objects.get(username='b')
|
||||||
self.assertEqual(user.email, 'b@example.org')
|
self.assertEqual(user.email, 'b@example.org')
|
||||||
self.assertEqual(user.ponyconfuser.biography, '')
|
self.assertEqual(user.profile.biography, '')
|
||||||
|
|
||||||
self.client.login(username='b', password='b')
|
self.client.login(username='b', password='b')
|
||||||
|
|
||||||
|
@ -35,4 +35,4 @@ class AccountTests(TestCase):
|
||||||
|
|
||||||
user = User.objects.get(username='z')
|
user = User.objects.get(username='z')
|
||||||
self.assertEqual(user.email, 'b@newdomain.com')
|
self.assertEqual(user.email, 'b@newdomain.com')
|
||||||
self.assertEqual(user.ponyconfuser.biography, 'tester')
|
self.assertEqual(user.profile.biography, 'tester')
|
||||||
|
|
|
@ -2,14 +2,14 @@ from django.contrib import messages
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
|
|
||||||
from .forms import PonyConfUserForm, ProfileForm
|
from .forms import ProfileForm, UserForm
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def profile(request):
|
def profile(request):
|
||||||
|
|
||||||
forms = [ProfileForm(request.POST or None, instance=request.user),
|
forms = [UserForm(request.POST or None, instance=request.user),
|
||||||
PonyConfUserForm(request.POST or None, instance=request.user.ponyconfuser)]
|
ProfileForm(request.POST or None, instance=request.user.profile)]
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
if all(form.is_valid() for form in forms):
|
if all(form.is_valid() for form in forms):
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Generated by Django 1.9.6 on 2016-06-02 21:26
|
# Generated by Django 1.9.7 on 2016-06-12 15:10
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import django.db.models.deletion
|
|
||||||
from django.conf import settings
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
import autoslug.fields
|
import autoslug.fields
|
||||||
|
import django.contrib.sites.managers
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
import django.db.models.manager
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
@ -15,7 +15,7 @@ class Migration(migrations.Migration):
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('sites', '0002_alter_domain_unique'),
|
('sites', '0002_alter_domain_unique'),
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
('accounts', '0001_initial'),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
@ -24,9 +24,10 @@ class Migration(migrations.Migration):
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('order', models.IntegerField(choices=[(1, '1'), (2, '2'), (3, '3'), (4, '4'), (5, '5'), (6, '6'), (7, '7')])),
|
('order', models.IntegerField(choices=[(1, '1'), (2, '2'), (3, '3'), (4, '4'), (5, '5'), (6, '6'), (7, '7')])),
|
||||||
|
('speaker', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='accounts.Speaker')),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'ordering': ['order'],
|
'ordering': ['talk', 'order'],
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
|
@ -37,7 +38,11 @@ class Migration(migrations.Migration):
|
||||||
('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='title', unique=True)),
|
('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='title', unique=True)),
|
||||||
('description', models.TextField(blank=True, verbose_name='Description')),
|
('description', models.TextField(blank=True, verbose_name='Description')),
|
||||||
('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
|
('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
|
||||||
('speakers', models.ManyToManyField(through='proposals.Speach', to=settings.AUTH_USER_MODEL)),
|
('speakers', models.ManyToManyField(through='proposals.Speach', to='accounts.Speaker')),
|
||||||
|
],
|
||||||
|
managers=[
|
||||||
|
('objects', django.db.models.manager.Manager()),
|
||||||
|
('on_site', django.contrib.sites.managers.CurrentSiteManager()),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
|
@ -45,8 +50,13 @@ class Migration(migrations.Migration):
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('name', models.CharField(max_length=128, unique=True, verbose_name='Name')),
|
('name', models.CharField(max_length=128, unique=True, verbose_name='Name')),
|
||||||
|
('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True)),
|
||||||
('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
|
('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
|
||||||
],
|
],
|
||||||
|
managers=[
|
||||||
|
('objects', django.db.models.manager.Manager()),
|
||||||
|
('on_site', django.contrib.sites.managers.CurrentSiteManager()),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='talk',
|
model_name='talk',
|
||||||
|
@ -58,13 +68,8 @@ class Migration(migrations.Migration):
|
||||||
name='talk',
|
name='talk',
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='proposals.Talk'),
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='proposals.Talk'),
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
|
||||||
model_name='speach',
|
|
||||||
name='user',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
|
||||||
),
|
|
||||||
migrations.AlterUniqueTogether(
|
migrations.AlterUniqueTogether(
|
||||||
name='speach',
|
name='speach',
|
||||||
unique_together=set([('user', 'talk'), ('order', 'talk')]),
|
unique_together=set([('speaker', 'talk'), ('order', 'talk')]),
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Generated by Django 1.9.6 on 2016-06-02 21:52
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
import autoslug.fields
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('proposals', '0001_initial'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='topic',
|
|
||||||
name='slug',
|
|
||||||
field=autoslug.fields.AutoSlugField(default='dudule', editable=False, populate_from='name', unique=True),
|
|
||||||
preserve_default=False,
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -1,31 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Generated by Django 1.9.6 on 2016-06-08 20:02
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import django.contrib.sites.managers
|
|
||||||
import django.db.models.manager
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('proposals', '0002_topic_slug'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterModelManagers(
|
|
||||||
name='talk',
|
|
||||||
managers=[
|
|
||||||
('objects', django.db.models.manager.Manager()),
|
|
||||||
('on_site', django.contrib.sites.managers.CurrentSiteManager()),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.AlterModelManagers(
|
|
||||||
name='topic',
|
|
||||||
managers=[
|
|
||||||
('objects', django.db.models.manager.Manager()),
|
|
||||||
('on_site', django.contrib.sites.managers.CurrentSiteManager()),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -1,30 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Generated by Django 1.9.7 on 2016-06-11 13:05
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import django.db.models.deletion
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('proposals', '0003_auto_20160608_2002'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name='speach',
|
|
||||||
options={'ordering': ['talk', 'order']},
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='speach',
|
|
||||||
name='user',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='accounts.PonyConfSpeaker'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='talk',
|
|
||||||
name='speakers',
|
|
||||||
field=models.ManyToManyField(through='proposals.Speach', to='accounts.PonyConfSpeaker'),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -1,24 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Generated by Django 1.9.7 on 2016-06-12 14:21
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('proposals', '0004_auto_20160611_1305'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RenameField(
|
|
||||||
model_name='speach',
|
|
||||||
old_name='user',
|
|
||||||
new_name='speaker',
|
|
||||||
),
|
|
||||||
migrations.AlterUniqueTogether(
|
|
||||||
name='speach',
|
|
||||||
unique_together=set([('speaker', 'talk'), ('order', 'talk')]),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -2,7 +2,7 @@ from django.contrib.sites.managers import CurrentSiteManager
|
||||||
from django.contrib.sites.models import Site
|
from django.contrib.sites.models import Site
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
from accounts.models import PonyConfSpeaker
|
from accounts.models import Speaker
|
||||||
from autoslug import AutoSlugField
|
from autoslug import AutoSlugField
|
||||||
|
|
||||||
__all__ = ['Topic', 'Talk', 'Speach']
|
__all__ = ['Topic', 'Talk', 'Speach']
|
||||||
|
@ -26,7 +26,7 @@ class Talk(models.Model):
|
||||||
|
|
||||||
site = models.ForeignKey(Site, on_delete=models.CASCADE)
|
site = models.ForeignKey(Site, on_delete=models.CASCADE)
|
||||||
|
|
||||||
speakers = models.ManyToManyField(PonyConfSpeaker, through='Speach')
|
speakers = models.ManyToManyField(Speaker, through='Speach')
|
||||||
title = models.CharField(max_length=128, verbose_name='Title')
|
title = models.CharField(max_length=128, verbose_name='Title')
|
||||||
slug = AutoSlugField(populate_from='title', unique=True)
|
slug = AutoSlugField(populate_from='title', unique=True)
|
||||||
description = models.TextField(blank=True, verbose_name='Description')
|
description = models.TextField(blank=True, verbose_name='Description')
|
||||||
|
@ -43,7 +43,7 @@ class Speach(models.Model):
|
||||||
|
|
||||||
SPEAKER_NO = tuple((i, str(i)) for i in range(1, 8))
|
SPEAKER_NO = tuple((i, str(i)) for i in range(1, 8))
|
||||||
|
|
||||||
speaker = models.ForeignKey(PonyConfSpeaker, on_delete=models.CASCADE)
|
speaker = models.ForeignKey(Speaker, on_delete=models.CASCADE)
|
||||||
talk = models.ForeignKey(Talk, on_delete=models.CASCADE)
|
talk = models.ForeignKey(Talk, on_delete=models.CASCADE)
|
||||||
order = models.IntegerField(choices=SPEAKER_NO)
|
order = models.IntegerField(choices=SPEAKER_NO)
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ from django.contrib.sites.shortcuts import get_current_site
|
||||||
from django.core.exceptions import PermissionDenied
|
from django.core.exceptions import PermissionDenied
|
||||||
from django.shortcuts import get_object_or_404, redirect, render
|
from django.shortcuts import get_object_or_404, redirect, render
|
||||||
|
|
||||||
from accounts.models import PonyConfSpeaker, PonyConfUser
|
from accounts.models import Speaker, Profile
|
||||||
from proposals.forms import TalkForm
|
from proposals.forms import TalkForm
|
||||||
from proposals.models import Speach, Talk, Topic
|
from proposals.models import Speach, Talk, Topic
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ def home(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def talk_list(request):
|
def talk_list(request):
|
||||||
speaker = PonyConfSpeaker.on_site.filter(user=request.user)
|
speaker = Speaker.on_site.filter(user=request.user)
|
||||||
if speaker.exists():
|
if speaker.exists():
|
||||||
speaker = speaker.first()
|
speaker = speaker.first()
|
||||||
mine = Talk.on_site.filter(speakers=speaker)
|
mine = Talk.on_site.filter(speakers=speaker)
|
||||||
|
@ -41,7 +41,7 @@ def talk_list_by_topic(request, topic):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def talk_list_by_speaker(request, speaker):
|
def talk_list_by_speaker(request, speaker):
|
||||||
speaker = get_object_or_404(PonyConfSpeaker, user__username=speaker)
|
speaker = get_object_or_404(Speaker, user__username=speaker)
|
||||||
talks = Talk.on_site.filter(speakers=speaker)
|
talks = Talk.on_site.filter(speakers=speaker)
|
||||||
return render(request, 'proposals/talk_list.html', {
|
return render(request, 'proposals/talk_list.html', {
|
||||||
'title': 'Talks with %s:' % speaker,
|
'title': 'Talks with %s:' % speaker,
|
||||||
|
@ -68,7 +68,7 @@ def talk_edit(request, talk=None):
|
||||||
talk = form.save(commit=False)
|
talk = form.save(commit=False)
|
||||||
talk.site = site
|
talk.site = site
|
||||||
talk.save()
|
talk.save()
|
||||||
speaker = PonyConfSpeaker.on_site.get_or_create(user=request.user, site=site)[0]
|
speaker = Speaker.on_site.get_or_create(user=request.user, site=site)[0]
|
||||||
speach = Speach(speaker=speaker, talk=talk, order=1)
|
speach = Speach(speaker=speaker, talk=talk, order=1)
|
||||||
speach.save()
|
speach.save()
|
||||||
messages.success(request, 'Talk proposed successfully!')
|
messages.success(request, 'Talk proposed successfully!')
|
||||||
|
@ -96,7 +96,7 @@ def topic_list(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def speaker_list(request):
|
def speaker_list(request):
|
||||||
speakers = PonyConfSpeaker.on_site.all()
|
speakers = Speaker.on_site.all()
|
||||||
return render(request, 'proposals/speaker_list.html', {
|
return render(request, 'proposals/speaker_list.html', {
|
||||||
'speaker': speakers,
|
'speaker': speakers,
|
||||||
})
|
})
|
||||||
|
@ -104,7 +104,7 @@ def speaker_list(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def user_details(request, username):
|
def user_details(request, username):
|
||||||
user = get_object_or_404(PonyConfUser, user__username=username)
|
user = get_object_or_404(Profile, user__username=username)
|
||||||
return render(request, 'proposals/user_details.html', {
|
return render(request, 'proposals/user_details.html', {
|
||||||
'user': user,
|
'user': user,
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue