From 89035d32cd40ba7c978296fab8515e3cb524f1c6 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Mon, 7 Nov 2016 18:49:53 +0100 Subject: [PATCH] Add Demo URL, fix person list placeholder --- .../migrations/0029_auto_20161107_1742.py | 25 +++++++++++++++++++ .../migrations/0030_auto_20161107_1828.py | 25 +++++++++++++++++++ app/organization/projects/models.py | 22 +++++++++------- app/templates/pages/page.html | 5 +++- app/templates/pages/teampage.html | 2 +- .../projects/project_demo_detail.html | 3 ++- 6 files changed, 70 insertions(+), 12 deletions(-) create mode 100644 app/organization/projects/migrations/0029_auto_20161107_1742.py create mode 100644 app/organization/projects/migrations/0030_auto_20161107_1828.py diff --git a/app/organization/projects/migrations/0029_auto_20161107_1742.py b/app/organization/projects/migrations/0029_auto_20161107_1742.py new file mode 100644 index 00000000..573de714 --- /dev/null +++ b/app/organization/projects/migrations/0029_auto_20161107_1742.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.10 on 2016-11-07 16:42 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-projects', '0028_auto_20161104_1855'), + ] + + operations = [ + migrations.AddField( + model_name='projectdemo', + name='directory', + field=models.CharField(blank=True, help_text='Relative directory in repository', max_length=256, null=True, verbose_name='directory'), + ), + migrations.AlterField( + model_name='repository', + name='url', + field=models.CharField(help_text='(HTTP(S) or SSH)', max_length=256, verbose_name='URL'), + ), + ] diff --git a/app/organization/projects/migrations/0030_auto_20161107_1828.py b/app/organization/projects/migrations/0030_auto_20161107_1828.py new file mode 100644 index 00000000..168fe550 --- /dev/null +++ b/app/organization/projects/migrations/0030_auto_20161107_1828.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.10 on 2016-11-07 17:28 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-projects', '0029_auto_20161107_1742'), + ] + + operations = [ + migrations.AddField( + model_name='projectdemo', + name='url', + field=models.URLField(blank=True, max_length=512, verbose_name='URL'), + ), + migrations.AlterField( + model_name='repository', + name='url', + field=models.CharField(help_text='http(s) or ssh', max_length=256, verbose_name='URL'), + ), + ] diff --git a/app/organization/projects/models.py b/app/organization/projects/models.py index 9a4aa239..493565f4 100644 --- a/app/organization/projects/models.py +++ b/app/organization/projects/models.py @@ -128,12 +128,13 @@ class ProjectTopicPage(Page, SubTitled): verbose_name_plural = _("project topic pages") -class ProjectDemo(Displayable, RichText): +class ProjectDemo(Displayable, RichText, URL): project = models.ForeignKey('Project', verbose_name=_('project'), related_name='demos', blank=True, null=True, on_delete=models.SET_NULL) authors = models.ManyToManyField(Person, verbose_name=_('authors'), related_name='demos', blank=True) repository = models.ForeignKey('Repository', verbose_name=_('repository'), related_name='demos', blank=True, null=True, on_delete=models.SET_NULL) build_commands = models.TextField(_('build commands'), blank=True) + directory = models.CharField(_('directory'), max_length=256, blank=True, null=True, help_text='Relative directory in repository') class Meta: verbose_name = _('project demo') @@ -142,6 +143,11 @@ class ProjectDemo(Displayable, RichText): def get_absolute_url(self): return reverse("organization-project-demo-detail", kwargs={"slug": self.slug}) + @property + def relative_url(self): + path = self.repository.directory.replace(settings.MEDIA_ROOT, '') + return settings.MEDIA_URL + path + os.sep + self.directory + '/index.html' + def build(self): os.chdir(self.repository.directory) for command in self.build_commands.split('\n'): @@ -149,14 +155,16 @@ class ProjectDemo(Displayable, RichText): def save(self, *args, **kwargs): super(ProjectDemo, self).save(args, kwargs) - self.build() + if self.repository: + self.build() -class Repository(Named, URL): +class Repository(Named): system = models.ForeignKey('RepositorySystem', verbose_name=_('system'), related_name='repositories') access = models.CharField(_('access'), max_length=64, choices=ACCESS_CHOICES, default='private') branch = models.CharField(_('branch'), max_length=32, default='master') + url = models.CharField(_('URL'), max_length=256, help_text='http(s) or ssh') class Meta: verbose_name = _('repository') @@ -164,6 +172,7 @@ class Repository(Named, URL): def save(self, *args, **kwargs): super(Repository, self).save(args, kwargs) + os.path.exists(self.directory) if not os.path.exists(self.directory): self.clone() self.checkout() @@ -171,12 +180,7 @@ class Repository(Named, URL): @property def directory(self): dir_name = self.url.split('/')[-1].split('.')[0] - return settings.PROJECT_DEMOS_DIR + os.sep + dir_name - - @property - def relative_url(self): - path = self.directory.replace(settings.MEDIA_ROOT, '') - return settings.MEDIA_URL + path + '/index.html' + return settings.PROJECT_DEMOS_DIR + dir_name def clone(self): os.chdir(settings.PROJECT_DEMOS_DIR) diff --git a/app/templates/pages/page.html b/app/templates/pages/page.html index 158c6101..d364e256 100644 --- a/app/templates/pages/page.html +++ b/app/templates/pages/page.html @@ -106,6 +106,9 @@
+ {% block page_person_list %} + {% endblock %} + {% block page_sub_content %} {% with object.blocks.all as blocks %} {% include "core/inc/block.html" %} @@ -130,7 +133,7 @@ {% block page_sub_content_2 %} {% endblock %} - {% block page_person_list %} + {% block page_person_list_team %} {% endblock %} {% block logo %} diff --git a/app/templates/pages/teampage.html b/app/templates/pages/teampage.html index 36e65eea..ce0894e1 100644 --- a/app/templates/pages/teampage.html +++ b/app/templates/pages/teampage.html @@ -74,7 +74,7 @@ {% endwith %} {% endblock %} -{% block page_person_list %} +{% block page_person_list_team %} {% activity_statuses as statuses %} {% if statuses|length > 0 %}
diff --git a/app/templates/projects/project_demo_detail.html b/app/templates/projects/project_demo_detail.html index 42df2cac..0c366223 100644 --- a/app/templates/projects/project_demo_detail.html +++ b/app/templates/projects/project_demo_detail.html @@ -38,6 +38,7 @@ {% block page_slider %}
- +
+ {% endblock %} -- 2.39.5