resolving model.py conflicts
authorHarris Baptiste <harris.baptiste@iri.centrepompidou.fr>
Thu, 18 Aug 2016 10:49:18 +0200
changeset 125 e13fed7f0837
parent 124 e5267573edd8 (current diff)
parent 123 c8a1216fd28f (diff)
child 137 454e39dced1f
resolving model.py conflicts
.hgignore
src/iconolab/models.py
src/iconolab/templates/partials/header_search_form.html
src/iconolab/urls.py
--- a/.hgignore	Wed Aug 17 18:36:44 2016 +0200
+++ b/.hgignore	Thu Aug 18 10:49:18 2016 +0200
@@ -7,7 +7,7 @@
 ^src/iconolab/static/iconolab/js/node_modules/
 ^src/iconolab/static/iconolab/js/iconolab-bundle/node_modules/
 ^src/iconolab/static/iconolab/js/iconolab-bundle/dist/
-
+\.orig$
 
 ^web/*
 ^\.pydevproject$
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iconolab/migrations/0009_auto_20160812_1417.py	Thu Aug 18 10:49:18 2016 +0200
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-12 14:17
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('iconolab', '0008_auto_20160811_1050'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='collection',
+            name='height',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+        migrations.AddField(
+            model_name='collection',
+            name='image',
+            field=models.ImageField(blank=True, height_field='height', null=True, upload_to='uploads/', width_field='width'),
+        ),
+        migrations.AddField(
+            model_name='collection',
+            name='width',
+            field=models.IntegerField(blank=True, null=True),
+        ),
+    ]
--- a/src/iconolab/models.py	Wed Aug 17 18:36:44 2016 +0200
+++ b/src/iconolab/models.py	Thu Aug 18 10:49:18 2016 +0200
@@ -31,6 +31,9 @@
     name = models.SlugField(max_length=50, unique=True)
     verbose_name = models.CharField(max_length=50, null=True, blank=True)
     description = models.CharField(max_length=255)
+    image = models.ImageField(upload_to='uploads/', height_field='height', width_field='width', null=True, blank=True)
+    height = models.IntegerField(null=True, blank=True)
+    width = models.IntegerField(null=True, blank=True)
 
     def __str__(self):
         return self.name
@@ -144,7 +147,7 @@
         tag_list = []
         for annotation in self.annotations.all():
             revision_tags = annotation.current_revision.tags.all()
-            tag_list = [tag.label for tag in revision_tags] 
+            tag_list = [tag.label for tag in revision_tags]
         return tag_list
 
 class AnnotationManager(models.Manager):
@@ -171,13 +174,13 @@
         initial_revision.save()
         initial_revision.set_tags(tags_json)
         
-        new_annotation.current_revision = initial_revision
-        new_annotation.save()
-        
         # Create stats object
         new_annotation_stats = AnnotationStats(annotation=new_annotation)
         new_annotation_stats.save()
         new_annotation_stats.set_tags_stats()
+        
+        # Link everything to parent
+        new_annotation.current_revision = initial_revision
         new_annotation.stats = new_annotation_stats
         new_annotation.save()
         return new_annotation
@@ -274,7 +277,6 @@
         if new_revision.state == AnnotationRevision.ACCEPTED:
             self.current_revision = new_revision
             self.save()
-        print(new_revision)
         iconolab_signals.revision_created.send(sender=AnnotationRevision, instance=new_revision)
         return new_revision
     
--- a/src/iconolab/signals/handlers.py	Wed Aug 17 18:36:44 2016 +0200
+++ b/src/iconolab/signals/handlers.py	Thu Aug 18 10:49:18 2016 +0200
@@ -12,7 +12,6 @@
 def increment_stats_on_new_revision(sender, instance, **kwargs):
     from iconolab.models import AnnotationRevision
     if sender == AnnotationRevision:
-        print(instance)
         # Annotation stats
         annotation = instance.annotation
         annotation.stats.submitted_revisions_count += 1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iconolab/templates/errors/404error.html	Thu Aug 18 10:49:18 2016 +0200
@@ -0,0 +1,7 @@
+{% extends 'iconolab_base.html' %}
+
+{% block content %}
+
+<h1>Erreur 404: <small>le contenu que vous essayez d'atteindre n'a pas été trouvé</small></h1>
+
+{% endblock %}
\ No newline at end of file
--- a/src/iconolab/templates/iconolab/collection_home.html	Wed Aug 17 18:36:44 2016 +0200
+++ b/src/iconolab/templates/iconolab/collection_home.html	Thu Aug 18 10:49:18 2016 +0200
@@ -9,13 +9,12 @@
 {% block content %}
   <h2>Fonds {{collection.verbose_name}}</h2>
   
-  
+ 
+  <p><strong>Images du fonds</strong></p>
 <ul class="image-list-wrapper list-inline">
-  <p><strong>Images du fonds</strong></p>
 
   {% for item in collection.items.all %}
-  <li class="small-image-wrapper">
-    
+  <li class="small-image-wrapper" style="margin-bottom: 5px;">
     <div class="image-container text-center" style="position: relative">
     {% with item.images.first as image %}
       {% thumbnail image.media "300x300" crop=False as im %}
@@ -23,11 +22,11 @@
           <img v-el:small-image src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" />
         </a>
       {% endthumbnail %}
-        <div class="fragment-infos">
+        <div class="object-infos">
           <a class="btn btn-default btn-xs collection-home-btn" href="{% url 'item_detail' collection_name item.item_guid %}"><i class="fa fa-eye"></i> Détail de l'objet</a>
         </div>
     {% endwith %}
-  </li>
+   </li>
 {% endfor %}
 </ul>
 
--- a/src/iconolab/templates/iconolab/detail_annotation.html	Wed Aug 17 18:36:44 2016 +0200
+++ b/src/iconolab/templates/iconolab/detail_annotation.html	Thu Aug 18 10:49:18 2016 +0200
@@ -47,7 +47,8 @@
                 {% else %}
                   <span class="glyphicon glyphicon-share"></span> Proposer une révision
                 {% endif %}
-              </a>  
+              </a> 
+              <br>
 	        {% endif %}
             <br>
             {% include "partials/annotation_stats_panel.html" with annotation=annotation label="Statistiques sur cette annotation:" %}  
--- a/src/iconolab/templates/partials/header.html	Wed Aug 17 18:36:44 2016 +0200
+++ b/src/iconolab/templates/partials/header.html	Thu Aug 18 10:49:18 2016 +0200
@@ -1,5 +1,5 @@
 {% load notifications_tags %}
-<nav class="navbar navbar-default" style="">
+<nav class="navbar navbar-default" {% if collection %} style="margin-bottom: 5px;" {% endif %}>
   <div class="container-fluid">
     <div class="navbar-header">
       <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
@@ -12,7 +12,6 @@
     </div>
     <div id="navbar" class="navbar-collapse collapse">
       <ul class="nav navbar-nav">
-        <li><a href="{% url 'home' %}">Accueil</a></li>
         <li><a href="#">Le projet</a></li>
         {% if collection_name %}<li><a href="{% url 'collection_home' collection_name %}">Contribuer</a></li>{% endif %}
       </ul>
@@ -34,4 +33,5 @@
       </ul>
     </div><!--/.nav-collapse -->
   </div><!--/.container-fluid -->
-</nav>
\ No newline at end of file
+</nav>
+{% include "partials/header_breadcrumbs.html" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iconolab/templates/partials/header_breadcrumbs.html	Thu Aug 18 10:49:18 2016 +0200
@@ -0,0 +1,21 @@
+{% if collection %}
+<ol class="breadcrumb">
+  <li><a href="{% url 'home' %}">Liste fonds</a></li>
+  {% if not image and not item %}
+    <li>Fond {{collection.verbose_name}}</li>
+  {% else %}
+    <li><a href="{% url 'collection_home' collection.name %}">Fond {{collection.verbose_name}}</a></li>
+    {% if not annotation %}
+      <li class="active">Objet</li>
+    {% else %}
+      <li><a href="{% url 'item_detail' collection.name image.item.item_guid %}">Objet</a></li>
+      {% if not revision %}
+        <li class="active">Annotation</li>
+      {% else %}
+        <li><a href="{% url 'annotation_detail' collection.name image.image_guid annotation.annotation_guid %}">Annotation</a></li>
+        <li class="active">Révision</li>
+      {% endif %}
+    {% endif %}
+  {% endif %}
+</ol>
+{% endif %}
\ No newline at end of file
--- a/src/iconolab/urls.py	Wed Aug 17 18:36:44 2016 +0200
+++ b/src/iconolab/urls.py	Thu Aug 18 10:49:18 2016 +0200
@@ -16,6 +16,7 @@
 from django.core.urlresolvers import reverse_lazy
 from django.conf.urls import url, include
 from django.contrib import admin
+from django import views as django_views
 from iconolab import views
 from iconolab.search_indexes.views import IconolabSearchView
 from . import settings
@@ -26,15 +27,19 @@
 import notifications.urls
 
 urlpatterns = [
-    url(r'^$', views.iconolab.RedirectView.as_view(url=reverse_lazy("home"))),
+    url(r'^$', django_views.generic.RedirectView.as_view(url=reverse_lazy("home"))),
     url(r'^admin/', admin.site.urls),
     url(r'^home$', views.iconolab.GlobalHomepageView.as_view(), name="home"),
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)$', views.iconolab.CollectionHomepageView.as_view(), name='collection_home'), # Home fond
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/items/(?P<item_guid>[^/]+)$', views.iconolab.ShowItemView.as_view(), name='item_detail'),
+    url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/items/?$', django_views.generic.RedirectView.as_view(pattern_name="collection_home")),
+    url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/?$', django_views.generic.RedirectView.as_view(pattern_name="collection_home")),
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)$', views.iconolab.ShowImageView.as_view(), name='image_detail'),
+    url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)/annotations/?$', django_views.generic.RedirectView.as_view(pattern_name="image_detail")),
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)/annotations/create$', login_required(views.iconolab.CreateAnnotationView.as_view()), name='annotation_create'),
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)/annotations/(?P<annotation_guid>[^/]+)/detail$', views.iconolab.ShowAnnotationView.as_view(), name='annotation_detail'),
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)/annotations/(?P<annotation_guid>[^/]+)/edit$', login_required(views.iconolab.EditAnnotationView.as_view()), name='annotation_edit'),
+    url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)/annotations/(?P<annotation_guid>[^/]+)/revisions/?$', django_views.generic.RedirectView.as_view(pattern_name="annotation_detail")),
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)/annotations/(?P<annotation_guid>[^/]+)/revisions/(?P<revision_guid>[^/]+)/detail', views.iconolab.ShowRevisionView.as_view(), name='revision_detail'),
     url(r'^collections/(?P<collection_name>[a-z0-9\-]+)/images/(?P<image_guid>[^/]+)/annotations/(?P<annotation_guid>[^/]+)/revisions/(?P<revision_guid>[^/]+)/merge$', login_required(views.iconolab.MergeProposalView.as_view()), name='annotation_merge'),
     url(r'^user/(?P<slug>[a-z0-9\-]+)/home/?$', views.iconolab.UserHomeView.as_view(), name="user_home"),
--- a/src/iconolab/views/iconolab.py	Wed Aug 17 18:36:44 2016 +0200
+++ b/src/iconolab/views/iconolab.py	Thu Aug 18 10:49:18 2016 +0200
@@ -2,7 +2,7 @@
 from django.http import Http404
 from django.contrib.auth.decorators import login_required
 from django.contrib.auth.models import User
-from django.views.generic import View, DetailView, RedirectView
+from django.views.generic import View, DetailView, RedirectView, TemplateView
 from django.views.generic.base import ContextMixin
 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
 from django.core.urlresolvers import reverse
@@ -80,7 +80,7 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection)
     
@@ -102,11 +102,11 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             item = Item.objects.prefetch_related("images").get(item_guid=kwargs.get('item_guid'))
-        except Item.DoesNotExist:
+        except (ValueError, Item.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection, item)
     
@@ -131,11 +131,11 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             image = Image.objects.prefetch_related("annotations").get(image_guid=kwargs.get('image_guid'))
-        except Image.DoesNotExist:
+        except (ValueError, Image.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection, image)
     
@@ -163,11 +163,11 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             image = Image.objects.prefetch_related("annotations").get(image_guid=kwargs.get('image_guid'))
-        except Image.DoesNotExist:
+        except (ValueError, Image.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection, image)
     
@@ -230,15 +230,15 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             image = Image.objects.prefetch_related("annotations").get(image_guid=kwargs.get('image_guid'))
-        except Image.DoesNotExist:
+        except (ValueError, Image.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             annotation = Annotation.objects.select_related('current_revision').get(annotation_guid=kwargs.get('annotation_guid'))
-        except Annotation.DoesNotExist:
+        except (ValueError, Annotation.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection, image, annotation)
     
@@ -300,15 +300,15 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             image = Image.objects.prefetch_related("annotations").get(image_guid=kwargs.get('image_guid'))
-        except Image.DoesNotExist:
+        except (ValueError, Image.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             annotation = Annotation.objects.select_related('current_revision').get(annotation_guid=kwargs.get('annotation_guid'))
-        except Annotation.DoesNotExist:
+        except (ValueError, Annotation.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection, image, annotation)
     
@@ -376,19 +376,19 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             image = Image.objects.prefetch_related("annotations").get(image_guid=kwargs.get('image_guid'))
-        except Image.DoesNotExist:
+        except (ValueError, Image.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             annotation = Annotation.objects.select_related('current_revision').get(annotation_guid=kwargs.get('annotation_guid'))
-        except Annotation.DoesNotExist:
+        except (ValueError, Annotation.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             revision = AnnotationRevision.objects.select_related('parent_revision').get(revision_guid=kwargs.get('revision_guid'))
-        except AnnotationRevision.DoesNotExist:
+        except (ValueError, AnnotationRevision.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection, image, annotation, revision)
     
@@ -434,19 +434,19 @@
     def check_kwargs(self, kwargs):
         try:
             collection = Collection.objects.prefetch_related("items", "items__images").get(name=kwargs.get('collection_name'))
-        except Collection.DoesNotExist:
+        except (ValueError, Collection.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             image = Image.objects.prefetch_related("annotations").get(image_guid=kwargs.get('image_guid'))
-        except Image.DoesNotExist:
+        except (ValueError, Image.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             annotation = Annotation.objects.select_related('current_revision').get(annotation_guid=kwargs.get('annotation_guid'))
-        except Annotation.DoesNotExist:
+        except (ValueError, Annotation.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         try:
             revision = AnnotationRevision.objects.select_related('parent_revision').get(revision_guid=kwargs.get('revision_guid'))
-        except AnnotationRevision.DoesNotExist:
+        except (ValueError, AnnotationRevision.DoesNotExist):
             return False, RedirectView.as_view(url=reverse('404error'))
         return True, (collection, image, annotation, revision)
     
@@ -564,7 +564,5 @@
         return render(request, 'iconolab/merge_revision.html', context)
     
     
-class NotFoundErrorView(View):
-    def get(self, request, *args, **kwargs):
-        # Handle image display here
-        pass
\ No newline at end of file
+class NotFoundErrorView(TemplateView):
+    template_name="errors/404error.html"
\ No newline at end of file