git clone --recursive git://git.forge.ircam.fr/Manifeste.git
cd Manifeste
- docker-compose up
+ docker-compose up db
+
+The last command is needed to init the database. Press CTRL-C to exit. Then fire up the whole composition::
+
+ docker-compose up
To restore the backuped database, in another terminal::
cd Manifeste
docker-compose run db /srv/backup/restore_db.sh
- docker-compose run pgdb /srv/backup/restore_db_eve.sh
-You should be able to browse the site at http://localhost:8010/
+You should be able to browse the site at http://localhost:9000/
MacOS or Windows:
cd Manifeste
docker-compose up
+The last command is needed to init the database. Press CTRL-C to exit. Then fire up the whole composition::
+
+ docker-compose up
+
Then, in another terminal::
eval "$(docker-machine env manifeste)"
cd Manifeste
- docker-compose run db /srv/backup/restore_db.sh #(MAJ base festival)
- docker-compose run pgdb /srv/backup/restore_db_eve.sh #(MAJ base eve)
-
+ docker-compose run db /srv/backup/restore_db.sh
`More info <https://docs.docker.com/>`_ about using docker and related tools.
The 3rd command should give you the IP of the VM. For example, if IP is 192.168.59.103, you should be able to browse the site at http://192.168.59.103:8010/
class FestivalEventAdmin(EventAdmin):
- """
- Admin class for events.
- """
inlines = [FestivalEventInline, ]
class ArtistAdminDisplayable(DisplayableAdmin):
- """
- Admin class for artists.
- """
fieldsets = deepcopy(ArtistAdmin.fieldsets)
- def save_form(self, request, form, change):
- """
- Super class ordering is important here - user must get saved first.
- """
- return DisplayableAdmin.save_form(self, request, form, change)
-
-
admin.site.unregister(Event)
admin.site.register(Event, FestivalEventAdmin)
from django.db import models
from django.utils.translation import ugettext_lazy as _
+from django.core.urlresolvers import reverse, reverse_lazy
from mezzanine.core.models import RichText, Displayable
from mezzanine.core.fields import RichTextField, OrderField, FileField
photo_credits = models.CharField(_('photo credits'), max_length=255, blank=True, null=True)
featured = models.BooleanField(_('featured'), default=False)
- search_fields = ("name", "bio")
-
- def __unicode__(self):
- return self.name
+ search_fields = ("title", "bio")
class Meta(MetaCore):
verbose_name = _('artist')
db_table = app_label + '_artists'
+ def __unicode__(self):
+ return self.title
+
+ def get_absolute_url(self):
+ url_name = "festival_artist_detail"
+ kwargs = {"slug": self.slug}
+ return reverse(url_name, kwargs=kwargs)
+
class Video(Displayable, RichText):
"""Video"""
event = models.ForeignKey(Event, related_name='videos', verbose_name=_('event'), blank=True, null=True, on_delete=models.SET_NULL)
media_id = models.IntegerField(_('media id'))
+ class Meta(MetaCore):
+ verbose_name = _('video')
+ db_table = app_label + '_videos'
+
def __unicode__(self):
- return
+ return self.title
@property
def html(self):
pass
+ @models.permalink
+ def get_absolute_url(self):
+ url_name = "festival_video_detail"
+ kwargs = {"slug": self.slug}
+ return reverse(url_name, kwargs=kwargs)
+
+
class EventCategory(BaseNameModel):
"""Event Category"""
<div class="artist-list">
<ul>
{% for artist in object_list %}
- <li><a href="{% url 'festival-artist-detail' artist.id %}">{{ artist.name }}</a></li>
+ <li><a href="{% url 'festival-artist-detail' artist.slug %}">{{ artist.name }}</a></li>
{% endfor %}
</ul>
</div>
<div class="video-list">
<ul>
{% for video in object_list %}
- <li><a href="{% url 'festival-video-detail' video.id %}">{{ video.title }}</a></li>
+ <li><a href="{% url 'festival-video-detail' video.slug %}">{{ video.title }}</a></li>
{% endfor %}
</ul>
</div>
urlpatterns = patterns('',
url(r'^artists/$', ArtistListView.as_view(), name="festival-artist-list"),
- url(r'^artists/(?P<pk>.*)/$', ArtistDetailView.as_view(), name="festival-artist-detail"),
- url(r'^videos/$', ArtistListView.as_view(), name="festival-video-list"),
- url(r'^videos/(?P<pk>.*)/$', ArtistDetailView.as_view(), name="festival-video-detail"),
+ url(r'^artists/(?P<slug>.*)/$', ArtistDetailView.as_view(), name="festival-artist-detail"),
+ url(r'^videos/$', VideoListView.as_view(), name="festival-video-list"),
+ url(r'^videos/(?P<slug>.*)/$', VideoDetailView.as_view(), name="festival-video-detail"),
)
from django.shortcuts import render
from django.views.generic import *
from django.views.generic.base import *
+from django.shortcuts import get_object_or_404
from festival.models import *
+class SlugMixin(object):
+
+ def get_object(self):
+ objects = self.model.objects.all()
+ return get_object_or_404(objects, slug=self.kwargs['slug'])
+
+
class ArtistListView(ListView):
model = Artist
return context
-class ArtistDetailView(DetailView):
+class ArtistDetailView(SlugMixin, DetailView):
model = Artist
template_name='festival/artist_detail.html'
return context
-class VideoDetailView(DetailView):
+class VideoDetailView(SlugMixin, DetailView):
model = Video
template_name='festival/video_detail.html'
def get_context_data(self, **kwargs):
context = super(VideoDetailView, self).get_context_data(**kwargs)
return context
+