]> git.parisson.com Git - mezzo.git/commitdiff
Add first demo detail view, update admin filters
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Sun, 6 Nov 2016 19:51:21 +0000 (20:51 +0100)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Sun, 6 Nov 2016 19:51:21 +0000 (20:51 +0100)
app/organization/media/admin.py
app/organization/network/admin.py
app/organization/projects/models.py
app/organization/projects/urls.py
app/organization/projects/views.py
app/templates/network/organization_list.html

index a0111e668ff727a01fae533c7fd580b8b96149ef..f26f0c9903e1724995cd9c8596354386ac90f3d9 100644 (file)
@@ -14,6 +14,7 @@ class MediaAdmin(BaseTranslationModelAdmin):
 
     model = Media
     inlines = (MediaTranscodedAdmin,)
+    list_display = ['title',]
 
 
 class PlaylistMediaInline(TabularDynamicInlineAdmin):
index 100860dbdaafde2f9b3680d04fb2c3893160be6e..1a9ab46cd3d8d2b6f34dc7c6d63809b2e2d4554d 100644 (file)
@@ -44,7 +44,6 @@ class OrganizationAdmin(BaseTranslationModelAdmin):
     list_filter = ['name', 'is_on_map']
 
 
-
 class PageProductListInline(TabularDynamicInlineAdmin):
 
     model = PageProductList
@@ -70,7 +69,8 @@ class TeamAdmin(BaseTranslationModelAdmin):
 
 class TeamPageAdmin(PageAdmin):
 
-    inlines = [PageImageInline, PageBlockInline, PagePlaylistInline, PageProductListInline, PageRelatedTitleAdmin, DynamicContentPageInline]
+    inlines = [PageImageInline, PageBlockInline, PagePlaylistInline,
+                PageProductListInline, PageRelatedTitleAdmin, DynamicContentPageInline]
 
 
 class PersonAdminBase(BaseTranslationModelAdmin):
@@ -82,7 +82,8 @@ class PersonActivityInline(StackedDynamicInlineAdmin):
 
     model = PersonActivity
     fk_name = 'person'
-    filter_horizontal = ['organizations', 'employers', 'teams', 'projects', 'supervisors', 'phd_directors', ]
+    filter_horizontal = ['organizations', 'employers', 'teams',
+                         'projects', 'supervisors', 'phd_directors', ]
 
 
 class PersonPlaylistInline(TabularDynamicInlineAdmin):
@@ -121,17 +122,18 @@ class PersonAdmin(BaseTranslationOrderedModelAdmin):
                PersonActivityInline,]
     first_fields = ['last_name', 'first_name', 'title', 'gender', 'user']
     search_fields = ['last_name', 'first_name']
-    list_display = ['last_name', 'first_name', 'description', 'email', 'gender']
+    list_display = ['last_name', 'first_name', 'description', 'email', 'gender', 'created']
     list_filter = ['person_title', 'activities__date_from', 'activities__date_to',
                     'activities__is_permanent', 'activities__framework', 'activities__grade',
-                    'activities__function', 'activities__teams',]
+                    'activities__status', 'activities__teams', 'activities__projects',]
 
 
 class PersonActivityAdmin(BaseTranslationModelAdmin):
 
     model = PersonActivity
     list_display = ['person', 'get_teams', 'status', 'date_from', 'date_to']
-    filter_horizontal = ['organizations', 'employers', 'teams', 'projects', 'supervisors', 'phd_directors', ]
+    filter_horizontal = ['organizations', 'employers', 'teams', 'projects',
+                         'supervisors', 'phd_directors', ]
 
     def get_teams(self, instance):
         values = []
index 66356bdbd57a9d6229233c95e60b43a39233bf39..9a4aa2398c18b2d68036753d98404dbee276c87c 100644 (file)
@@ -173,6 +173,11 @@ class Repository(Named, URL):
         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'
+
     def clone(self):
         os.chdir(settings.PROJECT_DEMOS_DIR)
         os.system(' '.join((self.system.clone_command, self.url)))
index 86bf8853e0ae19a6ce1ffb080064b4ccb78f2ca0..052f1293e8cf4818d217f45c771285f36908aa0e 100644 (file)
@@ -12,4 +12,5 @@ from organization.projects.views import *
 urlpatterns = [
     url("^project/detail/(?P<slug>.*)/$", ProjectDetailView.as_view(), name='organization-project-detail'),
     url("^dynamic-content-project/$",  permission_required('project.can_edit')(DynamicContentProjectView.as_view()), name='dynamic-content-project'),
+    url("^project/demo/(?P<slug>.*)/$", ProjectDemoDetailView.as_view(), name='organization-project-demo-detail'),
 ]
index a6bc9154a6729aa636353326be60ba637b861869..b58a1d6eeb9547ab083f3e680e7f36e181b3e611 100644 (file)
@@ -57,3 +57,34 @@ class DynamicContentProjectView(Select2QuerySetSequenceView):
         qs = self.mixup_querysets(qs)
 
         return qs
+
+
+class ProjectDemoDetailView(SlugMixin, DetailView):
+
+    model = ProjectDemo
+    template_name='projects/project_demo_detail.html'
+    context_object_name = 'demo'
+
+    def get_context_data(self, **kwargs):
+        context = super(ProjectDemoDetailView, self).get_context_data(**kwargs)
+        demo = self.get_object()
+        project = demo.project
+        department = None
+
+        if project:
+            if project.lead_team:
+                if project.lead_team.department:
+                    department = project.lead_team.department
+            else:
+                for team in project.teams.all():
+                    if team.department:
+                        department = team.department
+                        break
+
+            context['department'] = department
+            if project.topic and project.topic.parent:
+                context['page'] = project.topic.parent.pages.all().first()
+            elif project.topic:
+                context['page'] = project.topic.pages.all().first()
+
+        return context
index aadd9afe6cc84049aa29f2ea90fdc8e8fb42e085..7631729e58dc21adc80540e9ea2eaaddfe816e4f 100644 (file)
 {% block page_slider %}
 
 <div style="position: relative;">
-
     <div class="map" id="network-map">
-
     </div>
-
     <div class="map-legend">
-
         {% for type in organization_types %}
             <div class="map-legend__item map-legend__item--{{ type.1 }}">{{ type.0 }}</div>
         {% endfor %}
-
     </div>
-
 </div>
-
     <div class="container">
-
         <div class="row">
-
             <div class="col-xs-12 col-md-10 col-md-push-1">
-
                 <div class="slider-network">
-
                     <ul class="slider-network__slider" data-slider-network>
-
                         {% for organization in organizations %}
-
                             <li class="slider-network__slide" data-marker-url="{{organization.url}}" data-marker-color="{{ organization.type.css_class }}" {% with organization.images.all|get_type:'logo' as images %}{% if images %}data-marker-image="{{ MEDIA_URL }}{{images.first.file}}"{% endif %}{% endwith %} data-marker-idx="{{forloop.counter0}}" data-marker-lat="{{ organization.lat }}" data-marker-lng="{{ organization.lon }}">
                                 <div class="slider-network__slide-image"
-
                                     {% with organization.images.all|get_type:'logo' as images %}
                                         {% if images %}
                                             style="background-image: url('{{ MEDIA_URL }}{{images.first.file}}');"
                                         {% endif %}
                                     {% endwith %}
-
                                 >
                                 </div>
                                 <div class="slider-network__slide-title" data-marker-title>
                             {% endcomment %}
 
                         {% endfor %}
-
                     </ul>
-
                 </div>
-
             </div>
-
         </div>
-
     </div>
-
 {% endblock %}