Merge pull request #386 from taigaio/issue/2995/add-custom-video-conference

Issue#2995: Add custom video conference system
remotes/origin/enhancement/email-actions
David Barragán Merino 2015-07-02 19:52:43 +02:00
commit 8c60b9f22b
5 changed files with 47 additions and 9 deletions

View File

@ -8,6 +8,7 @@
- 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).
- Fix the compatibility with BitBucket webhooks and add issues and issues comments integration.
- Add custom videoconference system.
### Misc
- API: Mixin fields 'users', 'members' and 'memberships' in ProjectDetailSerializer

View File

@ -20,5 +20,6 @@ from django.utils.translation import ugettext_lazy as _
VIDEOCONFERENCES_CHOICES = (
("appear-in", _("AppearIn")),
("jitsi", _("Jitsi")),
("custom", _("Custom")),
("talky", _("Talky")),
)

View File

@ -16,7 +16,7 @@
"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\"}",
"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\"}]",
"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\"}]",
@ -43,7 +43,7 @@
"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\"}",
"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\"}]",
"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\"}]",

View File

@ -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,
),
]

View File

@ -150,8 +150,8 @@ class Project(ProjectDefaults, TaggedMixin, models.Model):
videoconferences = models.CharField(max_length=250, null=True, blank=True,
choices=choices.VIDEOCONFERENCES_CHOICES,
verbose_name=_("videoconference system"))
videoconferences_salt = models.CharField(max_length=250, null=True, blank=True,
verbose_name=_("videoconference room salt"))
videoconferences_extra_data = models.CharField(max_length=250, null=True, blank=True,
verbose_name=_("videoconference extra data"))
creation_template = models.ForeignKey("projects.ProjectTemplate",
related_name="projects", null=True,
@ -209,7 +209,7 @@ class Project(ProjectDefaults, TaggedMixin, models.Model):
self.slug = slug
if not self.videoconferences:
self.videoconferences_salt = None
self.videoconferences_extra_data = None
super().save(*args, **kwargs)
@ -577,8 +577,8 @@ class ProjectTemplate(models.Model):
videoconferences = models.CharField(max_length=250, null=True, blank=True,
choices=choices.VIDEOCONFERENCES_CHOICES,
verbose_name=_("videoconference system"))
videoconferences_salt = models.CharField(max_length=250, null=True, blank=True,
verbose_name=_("videoconference room salt"))
videoconferences_extra_data = models.CharField(max_length=250, null=True, blank=True,
verbose_name=_("videoconference extra data"))
default_options = JsonField(null=True, blank=True, verbose_name=_("default options"))
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_issues_activated = project.is_issues_activated
self.videoconferences = project.videoconferences
self.videoconferences_salt = project.videoconferences_salt
self.videoconferences_extra_data = project.videoconferences_extra_data
self.default_options = {
"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_issues_activated = self.is_issues_activated
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:
UserStoryStatus.objects.create(