clean views: use directly request.user
This commit is contained in:
parent
e3e87b6f51
commit
4428180c54
22 changed files with 157 additions and 583 deletions
|
@ -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
|
@ -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,),
|
||||
),
|
||||
]
|
||||
|
|
|
@ -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',
|
||||
),
|
||||
]
|
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -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,
|
||||
),
|
||||
]
|
|
@ -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,
|
||||
),
|
||||
]
|
|
@ -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'),
|
||||
),
|
||||
]
|
|
@ -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',
|
||||
),
|
||||
]
|
|
@ -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')]),
|
||||
),
|
||||
]
|
|
@ -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'),
|
||||
),
|
||||
]
|
|
@ -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,
|
||||
),
|
||||
]
|
|
@ -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',
|
||||
),
|
||||
]
|
|
@ -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',
|
||||
),
|
||||
]
|
|
@ -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,
|
||||
),
|
||||
]
|
|
@ -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,
|
||||
),
|
||||
]
|
|
@ -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,
|
||||
),
|
||||
]
|
|
@ -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):
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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.")
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue