clean views: use directly request.user

This commit is contained in:
Élie Bouttier 2014-08-22 00:31:36 -07:00
parent e3e87b6f51
commit 4428180c54
22 changed files with 157 additions and 583 deletions

View file

@ -1,6 +1,7 @@
from django.contrib import admin from django.contrib import admin
from issue.models import * from issue.models import *
admin.site.register(User)
admin.site.register(Project) admin.site.register(Project)
admin.site.register(Issue) admin.site.register(Issue)
admin.site.register(Event) admin.site.register(Event)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -3,24 +3,51 @@ from __future__ import unicode_literals
from django.db import models, migrations from django.db import models, migrations
import colorful.fields import colorful.fields
import django.core.validators
from django.conf import settings from django.conf import settings
import django.utils.timezone
import django.core.validators
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('auth', '0001_initial'),
('sites', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL), migrations.swappable_dependency(settings.AUTH_USER_MODEL),
] ]
operations = [ operations = [
migrations.CreateModel(
name='User',
fields=[
('id', models.AutoField(primary_key=True, verbose_name='ID', auto_created=True, serialize=False)),
('password', models.CharField(verbose_name='password', max_length=128)),
('last_login', models.DateTimeField(verbose_name='last login', default=django.utils.timezone.now)),
('is_superuser', models.BooleanField(verbose_name='superuser status', default=False, help_text='Designates that this user has all permissions without explicitly assigning them.')),
('username', models.CharField(unique=True, verbose_name='username', validators=[django.core.validators.RegexValidator('^[\\w.@+-]+$', 'Enter a valid username.', 'invalid')], help_text='Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=30)),
('first_name', models.CharField(blank=True, verbose_name='first name', max_length=30)),
('last_name', models.CharField(blank=True, verbose_name='last name', max_length=30)),
('email', models.EmailField(blank=True, verbose_name='email address', max_length=75)),
('is_staff', models.BooleanField(verbose_name='staff status', default=False, help_text='Designates whether the user can log into this admin site.')),
('is_active', models.BooleanField(verbose_name='active', default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.')),
('date_joined', models.DateTimeField(verbose_name='date joined', default=django.utils.timezone.now)),
('groups', models.ManyToManyField(verbose_name='groups', to='auth.Group', blank=True)),
('user_permissions', models.ManyToManyField(verbose_name='user permissions', to='auth.Permission', blank=True)),
],
options={
'verbose_name': 'user',
'abstract': False,
'verbose_name_plural': 'users',
},
bases=(models.Model,),
),
migrations.CreateModel( migrations.CreateModel(
name='Event', name='Event',
fields=[ fields=[
('id', models.AutoField(primary_key=True, serialize=False, auto_created=True, verbose_name='ID')), ('id', models.AutoField(primary_key=True, verbose_name='ID', auto_created=True, serialize=False)),
('date', models.DateTimeField(auto_now_add=True)), ('date', models.DateTimeField(auto_now_add=True)),
('code', models.IntegerField(default=0)), ('code', models.IntegerField(default=0)),
('_args', models.CharField(blank=True, default='{}', max_length=1024)), ('_args', models.CharField(max_length=1024, default='{}', blank=True)),
('additionnal_section', models.TextField(blank=True, default='')), ('additionnal_section', models.TextField(blank=True, default='')),
('author', models.ForeignKey(to=settings.AUTH_USER_MODEL)), ('author', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
], ],
@ -28,6 +55,34 @@ class Migration(migrations.Migration):
}, },
bases=(models.Model,), bases=(models.Model,),
), ),
migrations.CreateModel(
name='GlobalPermission',
fields=[
('id', models.AutoField(primary_key=True, verbose_name='ID', auto_created=True, serialize=False)),
('grantee_type', models.IntegerField(choices=[(0, 'User'), (1, 'Group'), (2, 'Team')], verbose_name='Type', default=0)),
('grantee_name', models.CharField(verbose_name='Name', max_length=50)),
('create_project', models.BooleanField(default=True)),
('modify_project', models.BooleanField(default=False)),
('delete_project', models.BooleanField(default=False)),
('add_team', models.BooleanField(default=True)),
('manage_team', models.BooleanField(default=False)),
('manage_global_permission', models.BooleanField(default=False)),
('manage_project_permission', models.BooleanField(default=False)),
('create_issue', models.BooleanField(default=True)),
('modify_issue', models.BooleanField(default=False)),
('manage_issue', models.BooleanField(default=False)),
('delete_issue', models.BooleanField(default=False)),
('create_comment', models.BooleanField(default=True)),
('modify_comment', models.BooleanField(default=False)),
('delete_comment', models.BooleanField(default=False)),
('manage_tags', models.BooleanField(default=False)),
('delete_tags', models.BooleanField(default=False)),
],
options={
'abstract': False,
},
bases=(models.Model,),
),
migrations.CreateModel( migrations.CreateModel(
name='Issue', name='Issue',
fields=[ fields=[
@ -36,8 +91,9 @@ class Migration(migrations.Migration):
('title', models.CharField(max_length=128)), ('title', models.CharField(max_length=128)),
('opened_at', models.DateTimeField(auto_now_add=True)), ('opened_at', models.DateTimeField(auto_now_add=True)),
('closed', models.BooleanField(default=False)), ('closed', models.BooleanField(default=False)),
('assignee', models.ForeignKey(blank=True, null=True, to=settings.AUTH_USER_MODEL)), ('assignee', models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True)),
('author', models.ForeignKey(to=settings.AUTH_USER_MODEL)), ('author', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
('subscribers', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL, null=True)),
], ],
options={ options={
}, },
@ -52,11 +108,11 @@ class Migration(migrations.Migration):
migrations.CreateModel( migrations.CreateModel(
name='Label', name='Label',
fields=[ fields=[
('id', models.AutoField(primary_key=True, serialize=False, auto_created=True, verbose_name='ID')), ('id', models.AutoField(primary_key=True, verbose_name='ID', auto_created=True, serialize=False)),
('name', models.CharField(max_length=32)), ('name', models.CharField(max_length=32)),
('deleted', models.BooleanField(default=False)), ('deleted', models.BooleanField(default=False)),
('color', colorful.fields.RGBColorField(verbose_name='Background color', default='#000000')), ('color', colorful.fields.RGBColorField(verbose_name='Background color', default='#000000')),
('inverted', models.BooleanField(default=True, verbose_name='Inverse text color')), ('inverted', models.BooleanField(verbose_name='Inverse text color', default=True)),
], ],
options={ options={
}, },
@ -71,21 +127,29 @@ class Migration(migrations.Migration):
migrations.CreateModel( migrations.CreateModel(
name='Milestone', name='Milestone',
fields=[ fields=[
('id', models.AutoField(primary_key=True, serialize=False, auto_created=True, verbose_name='ID')), ('id', models.AutoField(primary_key=True, verbose_name='ID', auto_created=True, serialize=False)),
('name', models.CharField(max_length=32)), ('name', models.CharField(max_length=32, validators=[django.core.validators.RegexValidator(regex='^[a-z0-9_.-]+$', message='Please enter only lowercase characters, number, dot, underscores or hyphens.')])),
('progression', models.SmallIntegerField(default=0)), ('due_date', models.DateTimeField(blank=True, null=True)),
('due_date', models.DateTimeField(null=True)), ('closed', models.BooleanField(default=False)),
], ],
options={ options={
}, },
bases=(models.Model,), bases=(models.Model,),
), ),
migrations.AddField(
model_name='issue',
name='milestone',
field=models.ForeignKey(blank=True, to='issue.Milestone', null=True),
preserve_default=True,
),
migrations.CreateModel( migrations.CreateModel(
name='Project', name='Project',
fields=[ fields=[
('name', models.CharField(primary_key=True, verbose_name='Short name (used in URL, definitive)', validators=[django.core.validators.RegexValidator(message='Please enter only lowercase characters, number, underscores or hyphens.', regex='^[a-z0-9_-]+$')], serialize=False, max_length=32)), ('name', models.CharField(primary_key=True, verbose_name='Short name (used in URL, definitive)', validators=[django.core.validators.RegexValidator(regex='^[a-z0-9_-]+$', message='Please enter only lowercase characters, number, underscores or hyphens.')], serialize=False, max_length=32)),
('display_name', models.CharField(verbose_name='Project name', unique=True, max_length=32)), ('display_name', models.CharField(unique=True, verbose_name='Project name', max_length=32)),
('description', models.TextField(blank=True, default='', verbose_name='Description')), ('description', models.TextField(verbose_name='Description', default='', blank=True)),
('public', models.BooleanField(verbose_name='Do unregistered users have read access to this project?', default=True)),
('subscribers', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL, null=True)),
], ],
options={ options={
}, },
@ -117,4 +181,50 @@ class Migration(migrations.Migration):
name='issue', name='issue',
unique_together=set([('project', 'id')]), unique_together=set([('project', 'id')]),
), ),
migrations.CreateModel(
name='ProjectPermission',
fields=[
('id', models.AutoField(primary_key=True, verbose_name='ID', auto_created=True, serialize=False)),
('grantee_type', models.IntegerField(choices=[(0, 'User'), (1, 'Group'), (2, 'Team')], verbose_name='Type', default=0)),
('grantee_name', models.CharField(verbose_name='Name', max_length=50)),
('manage_project_permission', models.BooleanField(default=False)),
('create_issue', models.BooleanField(default=True)),
('modify_issue', models.BooleanField(default=False)),
('manage_issue', models.BooleanField(default=False)),
('delete_issue', models.BooleanField(default=False)),
('create_comment', models.BooleanField(default=True)),
('modify_comment', models.BooleanField(default=False)),
('delete_comment', models.BooleanField(default=False)),
('manage_tags', models.BooleanField(default=False)),
('delete_tags', models.BooleanField(default=False)),
('project', models.ForeignKey(editable=False, to='issue.Project')),
],
options={
'abstract': False,
},
bases=(models.Model,),
),
migrations.CreateModel(
name='Settings',
fields=[
('id', models.AutoField(primary_key=True, verbose_name='ID', auto_created=True, serialize=False)),
('site', models.OneToOneField(to='sites.Site')),
],
options={
'verbose_name_plural': 'Settings',
},
bases=(models.Model,),
),
migrations.CreateModel(
name='Team',
fields=[
('id', models.AutoField(primary_key=True, verbose_name='ID', auto_created=True, serialize=False)),
('name', models.CharField(unique=True, max_length=128)),
('groups', models.ManyToManyField(blank=True, to='auth.Group', null=True)),
('users', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL, null=True)),
],
options={
},
bases=(models.Model,),
),
] ]

View file

@ -1,24 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('issue', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='issue',
name='milestone',
field=models.ForeignKey(to='issue.Milestone', blank=True, null=True),
preserve_default=True,
),
migrations.RemoveField(
model_name='milestone',
name='progression',
),
]

View file

@ -1,25 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
import django.core.validators
class Migration(migrations.Migration):
dependencies = [
('issue', '0002_auto_20140803_0351'),
]
operations = [
migrations.AlterField(
model_name='milestone',
name='due_date',
field=models.DateTimeField(blank=True, null=True),
),
migrations.AlterField(
model_name='milestone',
name='name',
field=models.CharField(validators=[django.core.validators.RegexValidator(regex='^[a-z0-9_.-]+$', message='Please enter only lowercase characters, number, dot, underscores or hyphens.')], max_length=32),
),
]

View file

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('issue', '0003_auto_20140803_0651'),
]
operations = [
migrations.AddField(
model_name='milestone',
name='closed',
field=models.BooleanField(default=False),
preserve_default=True,
),
]

View file

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('issue', '0004_milestone_closed'),
]
operations = [
migrations.AddField(
model_name='project',
name='public',
field=models.BooleanField(default=True, verbose_name='Do unregistered users have read access to this project?'),
preserve_default=True,
),
]

View file

@ -1,106 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
from django.conf import settings
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('auth', '0001_initial'),
('contenttypes', '0001_initial'),
('sites', '0001_initial'),
('issue', '0005_project_public'),
]
operations = [
migrations.CreateModel(
name='GlobalPermission',
fields=[
('id', models.AutoField(primary_key=True, auto_created=True, verbose_name='ID', serialize=False)),
('grantee', models.CharField(max_length=50)),
('create_project', models.BooleanField(default=True)),
('modify_project', models.BooleanField(default=False)),
('delete_project', models.BooleanField(default=False)),
('content_type', models.ForeignKey(to='contenttypes.ContentType')),
],
options={
'abstract': False,
},
bases=(models.Model,),
),
migrations.CreateModel(
name='ProjectPermission',
fields=[
('id', models.AutoField(primary_key=True, auto_created=True, verbose_name='ID', serialize=False)),
('grantee', models.CharField(max_length=50)),
('create_issue', models.BooleanField(default=True)),
('modify_issue', models.BooleanField(default=False)),
('delete_issue', models.BooleanField(default=False)),
('create_comment', models.BooleanField(default=True)),
('modify_comment', models.BooleanField(default=False)),
('delete_comment', models.BooleanField(default=False)),
('create_label', models.BooleanField(default=True)),
('modify_label', models.BooleanField(default=False)),
('delete_label', models.BooleanField(default=False)),
('create_milestone', models.BooleanField(default=True)),
('modify_milestone', models.BooleanField(default=False)),
('delete_milestone', models.BooleanField(default=False)),
('content_type', models.ForeignKey(to='contenttypes.ContentType')),
('project', models.ForeignKey(to='issue.Project')),
],
options={
'abstract': False,
},
bases=(models.Model,),
),
migrations.CreateModel(
name='Settings',
fields=[
('id', models.AutoField(primary_key=True, auto_created=True, verbose_name='ID', serialize=False)),
('site', models.OneToOneField(to='sites.Site')),
],
options={
'verbose_name_plural': 'Settings',
},
bases=(models.Model,),
),
migrations.CreateModel(
name='Team',
fields=[
('id', models.AutoField(primary_key=True, auto_created=True, verbose_name='ID', serialize=False)),
('name', models.CharField(max_length=128, unique=True)),
('groups', models.ManyToManyField(to='auth.Group', blank=True, null=True)),
('users', models.ManyToManyField(to=settings.AUTH_USER_MODEL, blank=True, null=True)),
],
options={
},
bases=(models.Model,),
),
migrations.CreateModel(
name='User',
fields=[
],
options={
'proxy': True,
},
bases=('auth.user',),
),
migrations.AlterField(
model_name='event',
name='author',
field=models.ForeignKey(to='issue.User'),
),
migrations.AlterField(
model_name='issue',
name='assignee',
field=models.ForeignKey(to='issue.User', null=True, blank=True),
),
migrations.AlterField(
model_name='issue',
name='author',
field=models.ForeignKey(to='issue.User'),
),
]

View file

@ -1,44 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('issue', '0006_auto_20140807_2032'),
]
operations = [
migrations.RenameField(
model_name='globalpermission',
old_name='grantee',
new_name='grantee_name',
),
migrations.AddField(
model_name='globalpermission',
name='grantee_type',
field=models.IntegerField(default=0, choices=[(0, 'User'), (1, 'Group'), (2, 'Team')]),
preserve_default=False,
),
migrations.RenameField(
model_name='projectpermission',
old_name='grantee',
new_name='grantee_name',
),
migrations.AddField(
model_name='projectpermission',
name='grantee_type',
field=models.IntegerField(default=0, choices=[(0, 'User'), (1, 'Group'), (2, 'Team')]),
preserve_default=False,
),
migrations.RemoveField(
model_name='globalpermission',
name='content_type',
),
migrations.RemoveField(
model_name='projectpermission',
name='content_type',
),
]

View file

@ -1,52 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('issue', '0007_auto_20140808_0034'),
]
operations = [
migrations.AddField(
model_name='globalpermission',
name='add_team',
field=models.BooleanField(default=True),
preserve_default=True,
),
migrations.AddField(
model_name='globalpermission',
name='manage_permission',
field=models.BooleanField(default=False),
preserve_default=True,
),
migrations.AddField(
model_name='globalpermission',
name='manage_team',
field=models.BooleanField(default=False),
preserve_default=True,
),
migrations.AlterField(
model_name='globalpermission',
name='grantee_name',
field=models.CharField(verbose_name='Name', max_length=50),
),
migrations.AlterField(
model_name='globalpermission',
name='grantee_type',
field=models.IntegerField(default=0, verbose_name='Type', choices=[(0, 'User'), (1, 'Group'), (2, 'Team')]),
),
migrations.AlterField(
model_name='projectpermission',
name='grantee_name',
field=models.CharField(verbose_name='Name', max_length=50),
),
migrations.AlterField(
model_name='projectpermission',
name='grantee_type',
field=models.IntegerField(default=0, verbose_name='Type', choices=[(0, 'User'), (1, 'Group'), (2, 'Team')]),
),
]

View file

@ -1,19 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('issue', '0008_auto_20140808_0222'),
]
operations = [
migrations.AlterField(
model_name='projectpermission',
name='project',
field=models.ForeignKey(editable=False, to='issue.Project'),
),
]

View file

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('issue', '0009_auto_20140808_1635'),
]
operations = [
migrations.AddField(
model_name='projectpermission',
name='manage_permission',
field=models.BooleanField(default=False),
preserve_default=True,
),
]

View file

@ -1,24 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('issue', '0010_projectpermission_manage_permission'),
]
operations = [
migrations.RenameField(
model_name='globalpermission',
old_name='manage_permission',
new_name='manage_global_permission',
),
migrations.RenameField(
model_name='projectpermission',
old_name='manage_permission',
new_name='manage_project_permission',
),
]

View file

@ -1,50 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('issue', '0011_auto_20140810_2225'),
]
operations = [
migrations.AddField(
model_name='projectpermission',
name='delete_tags',
field=models.BooleanField(default=False),
preserve_default=True,
),
migrations.AddField(
model_name='projectpermission',
name='manage_tags',
field=models.BooleanField(default=False),
preserve_default=True,
),
migrations.RemoveField(
model_name='projectpermission',
name='create_label',
),
migrations.RemoveField(
model_name='projectpermission',
name='create_milestone',
),
migrations.RemoveField(
model_name='projectpermission',
name='delete_label',
),
migrations.RemoveField(
model_name='projectpermission',
name='delete_milestone',
),
migrations.RemoveField(
model_name='projectpermission',
name='modify_label',
),
migrations.RemoveField(
model_name='projectpermission',
name='modify_milestone',
),
]

View file

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('issue', '0012_auto_20140812_0508'),
]
operations = [
migrations.AddField(
model_name='projectpermission',
name='manage_issue',
field=models.BooleanField(default=False),
preserve_default=True,
),
]

View file

@ -1,74 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('issue', '0013_projectpermission_manage_issue'),
]
operations = [
migrations.AddField(
model_name='globalpermission',
name='create_comment',
field=models.BooleanField(default=True),
preserve_default=True,
),
migrations.AddField(
model_name='globalpermission',
name='create_issue',
field=models.BooleanField(default=True),
preserve_default=True,
),
migrations.AddField(
model_name='globalpermission',
name='delete_comment',
field=models.BooleanField(default=False),
preserve_default=True,
),
migrations.AddField(
model_name='globalpermission',
name='delete_issue',
field=models.BooleanField(default=False),
preserve_default=True,
),
migrations.AddField(
model_name='globalpermission',
name='delete_tags',
field=models.BooleanField(default=False),
preserve_default=True,
),
migrations.AddField(
model_name='globalpermission',
name='manage_issue',
field=models.BooleanField(default=False),
preserve_default=True,
),
migrations.AddField(
model_name='globalpermission',
name='manage_project_permission',
field=models.BooleanField(default=False),
preserve_default=True,
),
migrations.AddField(
model_name='globalpermission',
name='manage_tags',
field=models.BooleanField(default=False),
preserve_default=True,
),
migrations.AddField(
model_name='globalpermission',
name='modify_comment',
field=models.BooleanField(default=False),
preserve_default=True,
),
migrations.AddField(
model_name='globalpermission',
name='modify_issue',
field=models.BooleanField(default=False),
preserve_default=True,
),
]

View file

@ -1,26 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('issue', '0014_auto_20140815_0517'),
]
operations = [
migrations.AddField(
model_name='issue',
name='subscribers',
field=models.ManyToManyField(to='issue.User', blank=True, null=True),
preserve_default=True,
),
migrations.AddField(
model_name='project',
name='subscribers',
field=models.ManyToManyField(to='issue.User', blank=True, null=True),
preserve_default=True,
),
]

View file

@ -1,7 +1,6 @@
from django.db import models from django.db import models
from django.db.models import Q from django.db.models import Q
from django.contrib import auth from django.contrib.auth.models import AbstractUser, Group
from django.contrib.auth.models import Group
from django.core.validators import RegexValidator from django.core.validators import RegexValidator
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
@ -19,10 +18,7 @@ import json
from issue.templatetags.issue_tags import * from issue.templatetags.issue_tags import *
class User(auth.models.User): class User(AbstractUser):
class Meta:
proxy = True
@property @property
def teams(self): def teams(self):
@ -392,9 +388,11 @@ class Team(models.Model):
name = models.CharField(max_length=128, unique=True) name = models.CharField(max_length=128, unique=True)
users = models.ManyToManyField(auth.models.User, blank=True, null=True, # We dont want related field on User object because we use
related_name='teams') # a special function that retrieve also team through group
groups = models.ManyToManyField(auth.models.Group, blank=True, null=True, users = models.ManyToManyField(User, blank=True, null=True,
related_name='+')
groups = models.ManyToManyField(Group, blank=True, null=True,
related_name='teams') related_name='teams')
def __str__(self): def __str__(self):

View file

@ -11,14 +11,14 @@ class TestPermissions(TestCase):
def test_team_user_membership(self): def test_team_user_membership(self):
user = User.objects.get(username='user1') user = User.objects.get(username='user1')
team = Team.objects.get(name='team1') team = Team.objects.get(name='team1')
self.assertEqual(len(user.teams), 1) self.assertEqual(user.teams.count(), 1)
self.assertEqual(user.teams[0], team) self.assertEqual(user.teams.first(), team)
def test_team_group_membership(self): def test_team_group_membership(self):
user = User.objects.get(username='user2') user = User.objects.get(username='user2')
team = Team.objects.get(name='team2') team = Team.objects.get(name='team2')
self.assertEqual(len(user.teams), 1) self.assertEqual(user.teams.count(), 1)
self.assertEqual(user.teams[0], team) self.assertEqual(user.teams.first(), team)
def test_global_no_perms(self): def test_global_no_perms(self):
user = User.objects.get(username='user4') user = User.objects.get(username='user4')

View file

@ -16,11 +16,9 @@ import shlex
@login_required @login_required
def profile(request): def profile(request):
user = User.objects.get(username=request.user)
c = { c = {
'groups': user.groups.all(), 'groups': request.user.groups.all(),
'teams': user.teams.all(), 'teams': request.user.teams.all(),
} }
return render(request, 'issue/profile.html', c) return render(request, 'issue/profile.html', c)
@ -201,7 +199,7 @@ def project_add(request):
else: else:
project = form.save() project = form.save()
messages.success(request, 'Project added successfully.') messages.success(request, 'Project added successfully.')
project.subscribers.add(User.objects.get(username=request.user)) project.subscribers.add(request.user)
project.grant_user(request.user) project.grant_user(request.user)
return redirect('list-project-permission', project.name) return redirect('list-project-permission', project.name)
@ -383,8 +381,8 @@ def issue_edit(request, project, issue=None):
old_title = issue.title old_title = issue.title
issue.title = title issue.title = title
issue.save() issue.save()
author = User.objects.get(username=request.user.username) event = Event(issue=issue, author=request.user,
event = Event(issue=issue, author=author, code=Event.RENAME, code=Event.RENAME,
args={'old_title': old_title, 'new_title': title}) args={'old_title': old_title, 'new_title': title})
event.save() event.save()
modified = True modified = True
@ -400,11 +398,10 @@ def issue_edit(request, project, issue=None):
else: else:
author = User.objects.get(username=request.user.username) issue = Issue(title=title, author=request.user,
issue = Issue(title=title, author=author,
project=project, id=Issue.next_id(project)) project=project, id=Issue.next_id(project))
issue.save() issue.save()
issue.subscribers.add(author) issue.subscribers.add(request.user)
issue.description = description issue.description = description
notify_new_issue(issue) notify_new_issue(issue)
messages.success(request, 'Issue created successfully.') messages.success(request, 'Issue created successfully.')
@ -483,11 +480,10 @@ def issue_edit_comment(request, project, issue, comment=None):
else: else:
author = User.objects.get(username=request.user.username) event = Event(issue=issue, author=request.user,
event = Event(issue=issue, author=author,
code=Event.COMMENT, additionnal_section=comment) code=Event.COMMENT, additionnal_section=comment)
event.save() event.save()
issue.subscribers.add(author) issue.subscribers.add(request.user)
notify_new_comment(event) notify_new_comment(event)
messages.success(request, 'Comment added successfully.') messages.success(request, 'Comment added successfully.')
@ -523,8 +519,7 @@ def issue_close(request, project, issue):
issue.closed = True issue.closed = True
issue.save() issue.save()
author = User.objects.get(username=request.user.username) event = Event(issue=issue, author=request.user, code=Event.CLOSE)
event = Event(issue=issue, author=author, code=Event.CLOSE)
event.save() event.save()
notify_close_issue(event) notify_close_issue(event)
@ -540,8 +535,7 @@ def issue_reopen(request, project, issue):
issue.closed = False issue.closed = False
issue.save() issue.save()
author = User.objects.get(username=request.user.username) event = Event(issue=issue, author=request.user, code=Event.REOPEN)
event = Event(issue=issue, author=author, code=Event.REOPEN)
event.save() event.save()
notify_reopen_issue(event) notify_reopen_issue(event)
@ -567,9 +561,8 @@ def issue_add_label(request, project, issue, label):
issue = get_object_or_404(Issue, project=project, id=issue) issue = get_object_or_404(Issue, project=project, id=issue)
label = get_object_or_404(Label, project=project, id=label) label = get_object_or_404(Label, project=project, id=label)
author = User.objects.get(username=request.user.username)
issue.add_label(author, label) issue.add_label(request.user, label)
return redirect('show-issue', project.name, issue.id) return redirect('show-issue', project.name, issue.id)
@ -579,9 +572,8 @@ def issue_remove_label(request, project, issue, label):
issue = get_object_or_404(Issue, project=project, id=issue) issue = get_object_or_404(Issue, project=project, id=issue)
label = get_object_or_404(Label, project=project, id=label) label = get_object_or_404(Label, project=project, id=label)
author = User.objects.get(username=request.user.username)
issue.remove_label(author, label) issue.remove_label(request.user, label)
return redirect('show-issue', project.name, issue.id) return redirect('show-issue', project.name, issue.id)
@ -591,9 +583,8 @@ def issue_add_milestone(request, project, issue, milestone):
issue = get_object_or_404(Issue, project=project, id=issue) issue = get_object_or_404(Issue, project=project, id=issue)
milestone = get_object_or_404(Milestone, project=project, name=milestone) milestone = get_object_or_404(Milestone, project=project, name=milestone)
author = User.objects.get(username=request.user.username)
issue.add_milestone(author, milestone) issue.add_milestone(request.user, milestone)
return redirect('show-issue', project.name, issue.id) return redirect('show-issue', project.name, issue.id)
@ -603,9 +594,8 @@ def issue_remove_milestone(request, project, issue, milestone):
issue = get_object_or_404(Issue, project=project, id=issue) issue = get_object_or_404(Issue, project=project, id=issue)
milestone = get_object_or_404(Milestone, project=project, name=milestone) milestone = get_object_or_404(Milestone, project=project, name=milestone)
author = User.objects.get(username=request.user.username)
issue.remove_milestone(author, milestone) issue.remove_milestone(request.user, milestone)
return redirect('show-issue', project.name, issue.id) return redirect('show-issue', project.name, issue.id)
@ -676,10 +666,9 @@ def label_edit(request, project, id=None):
def label_delete(request, project, id): def label_delete(request, project, id):
label = get_object_or_404(Label, project=project, id=id) label = get_object_or_404(Label, project=project, id=id)
author = User.objects.get(username=request.user.username)
for issue in label.issues.all(): for issue in label.issues.all():
issue.remove_label(author, label) issue.remove_label(request.user, label)
label.deleted = True label.deleted = True
label.save() label.save()
@ -738,9 +727,8 @@ def milestone_edit(request, project, name=None):
if milestone: if milestone:
if name != form.cleaned_data['name']: if name != form.cleaned_data['name']:
author = User.objects.get(username=request.user.username)
for issue in milestone.issues.all(): for issue in milestone.issues.all():
event = Event(issue=issue, author=author, event = Event(issue=issue, author=request.user,
code=Event.CHANGE_MILESTONE, args={ code=Event.CHANGE_MILESTONE, args={
'old_milestone': name, 'old_milestone': name,
'new_milestone': form.cleaned_data['name'] 'new_milestone': form.cleaned_data['name']
@ -797,10 +785,9 @@ def milestone_reopen(request, project, name):
def milestone_delete(request, project, name): def milestone_delete(request, project, name):
milestone = get_object_or_404(Milestone, project=project, name=name) milestone = get_object_or_404(Milestone, project=project, name=name)
author = User.objects.get(username=request.user.username)
for issue in milestone.issues.all(): for issue in milestone.issues.all():
issue.remove_milestone(author, milestone) issue.remove_milestone(request.user, milestone)
milestone.delete() milestone.delete()
messages.success(request, "Label deleted successfully.") messages.success(request, "Label deleted successfully.")

View file

@ -149,3 +149,5 @@ CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend'
CELERY_ACCEPT_CONTENT = ['json'] CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json' CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json'
AUTH_USER_MODEL = 'issue.User'