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 issue.models import *
admin.site.register(User)
admin.site.register(Project)
admin.site.register(Issue)
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
import colorful.fields
import django.core.validators
from django.conf import settings
import django.utils.timezone
import django.core.validators
class Migration(migrations.Migration):
dependencies = [
('auth', '0001_initial'),
('sites', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
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(
name='Event',
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)),
('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='')),
('author', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
],
@ -28,6 +55,34 @@ class Migration(migrations.Migration):
},
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(
name='Issue',
fields=[
@ -36,8 +91,9 @@ class Migration(migrations.Migration):
('title', models.CharField(max_length=128)),
('opened_at', models.DateTimeField(auto_now_add=True)),
('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)),
('subscribers', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL, null=True)),
],
options={
},
@ -52,11 +108,11 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Label',
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)),
('deleted', models.BooleanField(default=False)),
('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={
},
@ -71,21 +127,29 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Milestone',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, auto_created=True, verbose_name='ID')),
('name', models.CharField(max_length=32)),
('progression', models.SmallIntegerField(default=0)),
('due_date', models.DateTimeField(null=True)),
('id', models.AutoField(primary_key=True, verbose_name='ID', auto_created=True, serialize=False)),
('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.')])),
('due_date', models.DateTimeField(blank=True, null=True)),
('closed', models.BooleanField(default=False)),
],
options={
},
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(
name='Project',
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)),
('display_name', models.CharField(verbose_name='Project name', unique=True, max_length=32)),
('description', models.TextField(blank=True, default='', verbose_name='Description')),
('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(unique=True, verbose_name='Project name', max_length=32)),
('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={
},
@ -117,4 +181,50 @@ class Migration(migrations.Migration):
name='issue',
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.models import Q
from django.contrib import auth
from django.contrib.auth.models import Group
from django.contrib.auth.models import AbstractUser, Group
from django.core.validators import RegexValidator
from django.core.exceptions import ValidationError
from django.utils.safestring import mark_safe
@ -19,10 +18,7 @@ import json
from issue.templatetags.issue_tags import *
class User(auth.models.User):
class Meta:
proxy = True
class User(AbstractUser):
@property
def teams(self):
@ -392,9 +388,11 @@ class Team(models.Model):
name = models.CharField(max_length=128, unique=True)
users = models.ManyToManyField(auth.models.User, blank=True, null=True,
related_name='teams')
groups = models.ManyToManyField(auth.models.Group, blank=True, null=True,
# We dont want related field on User object because we use
# a special function that retrieve also team through group
users = models.ManyToManyField(User, blank=True, null=True,
related_name='+')
groups = models.ManyToManyField(Group, blank=True, null=True,
related_name='teams')
def __str__(self):

View file

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

View file

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

View file

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