Merge pull request #386 from taigaio/issue/2995/add-custom-video-conference
Issue#2995: Add custom video conference systemremotes/origin/enhancement/email-actions
commit
8c60b9f22b
|
@ -8,6 +8,7 @@
|
||||||
- Allow multiple actions in the commit messages.
|
- Allow multiple actions in the commit messages.
|
||||||
- Now every user that coments USs, Issues or Tasks will be involved in it (add author to the watchers list).
|
- Now every user that coments USs, Issues or Tasks will be involved in it (add author to the watchers list).
|
||||||
- Fix the compatibility with BitBucket webhooks and add issues and issues comments integration.
|
- Fix the compatibility with BitBucket webhooks and add issues and issues comments integration.
|
||||||
|
- Add custom videoconference system.
|
||||||
|
|
||||||
### Misc
|
### Misc
|
||||||
- API: Mixin fields 'users', 'members' and 'memberships' in ProjectDetailSerializer
|
- API: Mixin fields 'users', 'members' and 'memberships' in ProjectDetailSerializer
|
||||||
|
|
|
@ -20,5 +20,6 @@ from django.utils.translation import ugettext_lazy as _
|
||||||
VIDEOCONFERENCES_CHOICES = (
|
VIDEOCONFERENCES_CHOICES = (
|
||||||
("appear-in", _("AppearIn")),
|
("appear-in", _("AppearIn")),
|
||||||
("jitsi", _("Jitsi")),
|
("jitsi", _("Jitsi")),
|
||||||
|
("custom", _("Custom")),
|
||||||
("talky", _("Talky")),
|
("talky", _("Talky")),
|
||||||
)
|
)
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
"created_date": "2014-04-22T14:48:43.596Z",
|
"created_date": "2014-04-22T14:48:43.596Z",
|
||||||
"default_options": "{\"us_status\": \"New\", \"task_status\": \"New\", \"priority\": \"Normal\", \"issue_type\": \"Bug\", \"severity\": \"Normal\", \"points\": \"?\", \"issue_status\": \"New\"}",
|
"default_options": "{\"us_status\": \"New\", \"task_status\": \"New\", \"priority\": \"Normal\", \"issue_type\": \"Bug\", \"severity\": \"Normal\", \"points\": \"?\", \"issue_status\": \"New\"}",
|
||||||
"slug": "scrum",
|
"slug": "scrum",
|
||||||
"videoconferences_salt": "",
|
"videoconferences_extra_data": "",
|
||||||
"issue_statuses": "[{\"color\": \"#8C2318\", \"order\": 1, \"is_closed\": false, \"name\": \"New\", \"slug\": \"new\"}, {\"color\": \"#5E8C6A\", \"order\": 2, \"is_closed\": false, \"name\": \"In progress\", \"slug\": \"in-progress\"}, {\"color\": \"#88A65E\", \"order\": 3, \"is_closed\": true, \"name\": \"Ready for test\", \"slug\": \"ready-for-test\"}, {\"color\": \"#BFB35A\", \"order\": 4, \"is_closed\": true, \"name\": \"Closed\", \"slug\": \"closed\"}, {\"color\": \"#89BAB4\", \"order\": 5, \"is_closed\": false, \"name\": \"Needs Info\", \"slug\": \"needs-info\"}, {\"color\": \"#CC0000\", \"order\": 6, \"is_closed\": true, \"name\": \"Rejected\", \"slug\": \"rejected\"}, {\"color\": \"#666666\", \"order\": 7, \"is_closed\": false, \"name\": \"Postponed\", \"slug\": \"posponed\"}]",
|
"issue_statuses": "[{\"color\": \"#8C2318\", \"order\": 1, \"is_closed\": false, \"name\": \"New\", \"slug\": \"new\"}, {\"color\": \"#5E8C6A\", \"order\": 2, \"is_closed\": false, \"name\": \"In progress\", \"slug\": \"in-progress\"}, {\"color\": \"#88A65E\", \"order\": 3, \"is_closed\": true, \"name\": \"Ready for test\", \"slug\": \"ready-for-test\"}, {\"color\": \"#BFB35A\", \"order\": 4, \"is_closed\": true, \"name\": \"Closed\", \"slug\": \"closed\"}, {\"color\": \"#89BAB4\", \"order\": 5, \"is_closed\": false, \"name\": \"Needs Info\", \"slug\": \"needs-info\"}, {\"color\": \"#CC0000\", \"order\": 6, \"is_closed\": true, \"name\": \"Rejected\", \"slug\": \"rejected\"}, {\"color\": \"#666666\", \"order\": 7, \"is_closed\": false, \"name\": \"Postponed\", \"slug\": \"posponed\"}]",
|
||||||
"default_owner_role": "product-owner",
|
"default_owner_role": "product-owner",
|
||||||
"issue_types": "[{\"color\": \"#89BAB4\", \"order\": 1, \"name\": \"Bug\"}, {\"color\": \"#ba89a8\", \"order\": 2, \"name\": \"Question\"}, {\"color\": \"#89a8ba\", \"order\": 3, \"name\": \"Enhancement\"}]",
|
"issue_types": "[{\"color\": \"#89BAB4\", \"order\": 1, \"name\": \"Bug\"}, {\"color\": \"#ba89a8\", \"order\": 2, \"name\": \"Question\"}, {\"color\": \"#89a8ba\", \"order\": 3, \"name\": \"Enhancement\"}]",
|
||||||
|
@ -43,7 +43,7 @@
|
||||||
"created_date": "2014-04-22T14:50:19.738Z",
|
"created_date": "2014-04-22T14:50:19.738Z",
|
||||||
"default_options": "{\"us_status\": \"New\", \"task_status\": \"New\", \"priority\": \"Normal\", \"issue_type\": \"Bug\", \"severity\": \"Normal\", \"points\": \"?\", \"issue_status\": \"New\"}",
|
"default_options": "{\"us_status\": \"New\", \"task_status\": \"New\", \"priority\": \"Normal\", \"issue_type\": \"Bug\", \"severity\": \"Normal\", \"points\": \"?\", \"issue_status\": \"New\"}",
|
||||||
"slug": "kanban",
|
"slug": "kanban",
|
||||||
"videoconferences_salt": "",
|
"videoconferences_extra_data": "",
|
||||||
"issue_statuses": "[{\"color\": \"#999999\", \"order\": 1, \"is_closed\": false, \"name\": \"New\", \"slug\": \"new\"}, {\"color\": \"#729fcf\", \"order\": 2, \"is_closed\": false, \"name\": \"In progress\", \"slug\": \"in-progress\"}, {\"color\": \"#f57900\", \"order\": 3, \"is_closed\": true, \"name\": \"Ready for test\", \"slug\": \"ready-for-test\"}, {\"color\": \"#4e9a06\", \"order\": 4, \"is_closed\": true, \"name\": \"Closed\", \"slug\": \"closed\"}, {\"color\": \"#cc0000\", \"order\": 5, \"is_closed\": false, \"name\": \"Needs Info\", \"slug\": \"needs-info\"}, {\"color\": \"#d3d7cf\", \"order\": 6, \"is_closed\": true, \"name\": \"Rejected\", \"slug\": \"rejected\"}, {\"color\": \"#75507b\", \"order\": 7, \"is_closed\": false, \"name\": \"Postponed\", \"slug\": \"posponed\"}]",
|
"issue_statuses": "[{\"color\": \"#999999\", \"order\": 1, \"is_closed\": false, \"name\": \"New\", \"slug\": \"new\"}, {\"color\": \"#729fcf\", \"order\": 2, \"is_closed\": false, \"name\": \"In progress\", \"slug\": \"in-progress\"}, {\"color\": \"#f57900\", \"order\": 3, \"is_closed\": true, \"name\": \"Ready for test\", \"slug\": \"ready-for-test\"}, {\"color\": \"#4e9a06\", \"order\": 4, \"is_closed\": true, \"name\": \"Closed\", \"slug\": \"closed\"}, {\"color\": \"#cc0000\", \"order\": 5, \"is_closed\": false, \"name\": \"Needs Info\", \"slug\": \"needs-info\"}, {\"color\": \"#d3d7cf\", \"order\": 6, \"is_closed\": true, \"name\": \"Rejected\", \"slug\": \"rejected\"}, {\"color\": \"#75507b\", \"order\": 7, \"is_closed\": false, \"name\": \"Postponed\", \"slug\": \"posponed\"}]",
|
||||||
"default_owner_role": "product-owner",
|
"default_owner_role": "product-owner",
|
||||||
"issue_types": "[{\"color\": \"#cc0000\", \"order\": 1, \"name\": \"Bug\"}, {\"color\": \"#729fcf\", \"order\": 2, \"name\": \"Question\"}, {\"color\": \"#4e9a06\", \"order\": 3, \"name\": \"Enhancement\"}]",
|
"issue_types": "[{\"color\": \"#cc0000\", \"order\": 1, \"name\": \"Bug\"}, {\"color\": \"#729fcf\", \"order\": 2, \"name\": \"Question\"}, {\"color\": \"#4e9a06\", \"order\": 3, \"name\": \"Enhancement\"}]",
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('projects', '0021_auto_20150504_1524'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='projecttemplate',
|
||||||
|
old_name='videoconferences_salt',
|
||||||
|
new_name='videoconferences_extra_data',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='project',
|
||||||
|
old_name='videoconferences_salt',
|
||||||
|
new_name='videoconferences_extra_data',
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='videoconferences',
|
||||||
|
field=models.CharField(blank=True, verbose_name='videoconference system', choices=[('appear-in', 'AppearIn'), ('jitsi', 'Jitsi'), ('custom', 'Custom'), ('talky', 'Talky')], null=True, max_length=250),
|
||||||
|
preserve_default=True,
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='projecttemplate',
|
||||||
|
name='videoconferences',
|
||||||
|
field=models.CharField(blank=True, verbose_name='videoconference system', choices=[('appear-in', 'AppearIn'), ('jitsi', 'Jitsi'), ('custom', 'Custom'), ('talky', 'Talky')], null=True, max_length=250),
|
||||||
|
preserve_default=True,
|
||||||
|
),
|
||||||
|
]
|
|
@ -150,8 +150,8 @@ class Project(ProjectDefaults, TaggedMixin, models.Model):
|
||||||
videoconferences = models.CharField(max_length=250, null=True, blank=True,
|
videoconferences = models.CharField(max_length=250, null=True, blank=True,
|
||||||
choices=choices.VIDEOCONFERENCES_CHOICES,
|
choices=choices.VIDEOCONFERENCES_CHOICES,
|
||||||
verbose_name=_("videoconference system"))
|
verbose_name=_("videoconference system"))
|
||||||
videoconferences_salt = models.CharField(max_length=250, null=True, blank=True,
|
videoconferences_extra_data = models.CharField(max_length=250, null=True, blank=True,
|
||||||
verbose_name=_("videoconference room salt"))
|
verbose_name=_("videoconference extra data"))
|
||||||
|
|
||||||
creation_template = models.ForeignKey("projects.ProjectTemplate",
|
creation_template = models.ForeignKey("projects.ProjectTemplate",
|
||||||
related_name="projects", null=True,
|
related_name="projects", null=True,
|
||||||
|
@ -209,7 +209,7 @@ class Project(ProjectDefaults, TaggedMixin, models.Model):
|
||||||
self.slug = slug
|
self.slug = slug
|
||||||
|
|
||||||
if not self.videoconferences:
|
if not self.videoconferences:
|
||||||
self.videoconferences_salt = None
|
self.videoconferences_extra_data = None
|
||||||
|
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
|
@ -577,8 +577,8 @@ class ProjectTemplate(models.Model):
|
||||||
videoconferences = models.CharField(max_length=250, null=True, blank=True,
|
videoconferences = models.CharField(max_length=250, null=True, blank=True,
|
||||||
choices=choices.VIDEOCONFERENCES_CHOICES,
|
choices=choices.VIDEOCONFERENCES_CHOICES,
|
||||||
verbose_name=_("videoconference system"))
|
verbose_name=_("videoconference system"))
|
||||||
videoconferences_salt = models.CharField(max_length=250, null=True, blank=True,
|
videoconferences_extra_data = models.CharField(max_length=250, null=True, blank=True,
|
||||||
verbose_name=_("videoconference room salt"))
|
verbose_name=_("videoconference extra data"))
|
||||||
|
|
||||||
default_options = JsonField(null=True, blank=True, verbose_name=_("default options"))
|
default_options = JsonField(null=True, blank=True, verbose_name=_("default options"))
|
||||||
us_statuses = JsonField(null=True, blank=True, verbose_name=_("us statuses"))
|
us_statuses = JsonField(null=True, blank=True, verbose_name=_("us statuses"))
|
||||||
|
@ -613,7 +613,7 @@ class ProjectTemplate(models.Model):
|
||||||
self.is_wiki_activated = project.is_wiki_activated
|
self.is_wiki_activated = project.is_wiki_activated
|
||||||
self.is_issues_activated = project.is_issues_activated
|
self.is_issues_activated = project.is_issues_activated
|
||||||
self.videoconferences = project.videoconferences
|
self.videoconferences = project.videoconferences
|
||||||
self.videoconferences_salt = project.videoconferences_salt
|
self.videoconferences_extra_data = project.videoconferences_extra_data
|
||||||
|
|
||||||
self.default_options = {
|
self.default_options = {
|
||||||
"points": getattr(project.default_points, "name", None),
|
"points": getattr(project.default_points, "name", None),
|
||||||
|
@ -717,7 +717,7 @@ class ProjectTemplate(models.Model):
|
||||||
project.is_wiki_activated = self.is_wiki_activated
|
project.is_wiki_activated = self.is_wiki_activated
|
||||||
project.is_issues_activated = self.is_issues_activated
|
project.is_issues_activated = self.is_issues_activated
|
||||||
project.videoconferences = self.videoconferences
|
project.videoconferences = self.videoconferences
|
||||||
project.videoconferences_salt = self.videoconferences_salt
|
project.videoconferences_extra_data = self.videoconferences_extra_data
|
||||||
|
|
||||||
for us_status in self.us_statuses:
|
for us_status in self.us_statuses:
|
||||||
UserStoryStatus.objects.create(
|
UserStoryStatus.objects.create(
|
||||||
|
|
Loading…
Reference in New Issue