Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion imager/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@

SITE_ID = 1

# IPs
INTERNAL_IPS = ('127.0.0.1',
'::1'
)

# Application definition

INSTALLED_APPS = (
Expand All @@ -43,7 +48,8 @@
'imager_user',
'imager_images',
'sorl.thumbnail',
'registration'
'registration',
'debug_toolbar',
)

MIDDLEWARE_CLASSES = (
Expand All @@ -54,6 +60,7 @@
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
)

ROOT_URLCONF = 'imager.urls'
Expand Down Expand Up @@ -116,3 +123,20 @@
REGISTRATION_OPEN = True
LOGIN_URL = '/accounts/login/'
LOGIN_REDIRECT_URL = '/profile/'

# Debug toolbar settings
DEBUG_TOOLBAR_PATCH_SETTINGS = False
DEBUG_TOOLBAR_PANELS = (
'debug_toolbar.panels.versions.VersionsPanel',
'debug_toolbar.panels.timer.TimerPanel',
'debug_toolbar.panels.settings.SettingsPanel',
'debug_toolbar.panels.headers.HeadersPanel',
'debug_toolbar.panels.request.RequestPanel',
'debug_toolbar.panels.sql.SQLPanel',
'debug_toolbar.panels.staticfiles.StaticFilesPanel',
'debug_toolbar.panels.templates.TemplatesPanel',
'debug_toolbar.panels.cache.CachePanel',
'debug_toolbar.panels.signals.SignalsPanel',
'debug_toolbar.panels.logging.LoggingPanel',
'debug_toolbar.panels.redirects.RedirectsPanel',
)
4 changes: 2 additions & 2 deletions imager/templates/home.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ <h2 id="headerTitle"><a href="{% url 'home' %}">Imgr</a></h2>
<li><a href="{% url 'auth_login' %}">Login</a></li>
<li><a href="{% url 'registration_register' %}">Join</a></li>
{% else %}
<li><a href="{% url 'content:stream' %}">Stream</a></li>
<li><a href="{% url 'content:library' %}">Library</a></li>
<li><a href="{% url 'images:stream' %}">Stream</a></li>
<li><a href="{% url 'images:library' %}">Library</a></li>
<li><a href="{% url 'auth_logout' %}?next=/">Logout</a></li>
{% endif %}
</ul>
Expand Down
21 changes: 13 additions & 8 deletions imager/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,20 @@
urlpatterns = patterns('',
# Examples:
url(r'^$', 'imager.views.home', name='home'),
url(r'^grappelli/', include('grappelli.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^accounts/', include(
'registration.backends.default.urls')),
url(r'^profile/', include(
'imager_user.urls', namespace='profile')),
url(r'^content/', include(
'imager_images.urls', namespace='content'))
url(r'^grappelli/',
include('grappelli.urls')),
url(r'^admin/',
include(admin.site.urls)),
url(r'^accounts/',
include('registration.backends.default.urls')),
url(r'^profile/',
include('imager_user.urls', namespace='profile')),
url(r'^',
include('imager_images.urls', namespace='images')),
)

if settings.DEBUG:
import debug_toolbar
urlpatterns += static(dcs.MEDIA_URL, document_root=dcs.MEDIA_ROOT)
urlpatterns += patterns('',
url(r'^__debug__/', include(debug_toolbar.urls)),)
47 changes: 44 additions & 3 deletions imager_images/forms.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from django.forms.models import ModelForm
from imager_images.models import Album, Photo
# from django.forms.models import inlineformset_factory


class NewAlbumForm(ModelForm):
Expand Down Expand Up @@ -27,9 +28,14 @@ class Meta:
# super(PhotoAlbumForm, self).__init__(*args, **kwargs)

# # # self.fields['photo'].queryset.filter(user=self.instance.album.user)
# # import pdb; pdb.set_trace()
# self.fields['photo'].queryset = self.fields['photo'].queryset.filter(
# user=self.instance.album.user)
# import pdb; pdb.set_trace()
# try:
# self.instance.album
# except:
# pass
# else:
# self.fields['photo'].queryset = self.fields['photo'].queryset.filter(
# user=self.instance.album.user)

# class Meta:
# model = Photo.albums.through
Expand All @@ -49,3 +55,38 @@ def __init__(self, *args, **kwargs):
class Meta:
model = Photo
exclude = []


# class AlbumUpdateViewForm(ModelForm):
# def __init__(self, *args, **kwargs):
# super(AlbumUpdateViewForm, self).__init__(*args, **kwargs)
# # import ipdb; ipdb.set_trace()
# self.fields['photos'].queryset = self.instance.user.photos.all()

# class Meta:
# model = Album

# fields = ('title',
# 'description',
# 'photos',
# 'published'
# )

# PhotoFormSet = inlineformset_factory(Album, Photo)


class PhotoUpdateViewForm(ModelForm):
def __init__(self, *args, **kwargs):
super(PhotoUpdateViewForm, self).__init__(*args, **kwargs)
# import ipdb; ipdb.set_trace()
self.fields['albums'].queryset = self.instance.user.albums.all()

class Meta:
model = Photo

fields = ('albums',
'title',
'description',
'date_published',
'published',
)
4 changes: 4 additions & 0 deletions imager_images/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from django.db import models
from django.contrib.auth.models import User
from sorl.thumbnail import ImageField
from django.core.urlresolvers import reverse

PRIVATE = 'pvt'
SHARED = 'shd'
Expand Down Expand Up @@ -60,3 +61,6 @@ def __str__(self):

def album_photos(self):
self.photos.all()

def get_absolute_url(self):
return reverse('album', kwargs={'pk': self.pk})
1 change: 0 additions & 1 deletion imager_images/static/imager_images/css/screen.css

This file was deleted.

12 changes: 12 additions & 0 deletions imager_images/templates/album_form.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{% extends "../../imager/templates/home.html" %}
{% block title %}Album: {{user}}{% endblock %}

{% block body %}
<h2>
<a href="{% url 'images:album_delete' object.pk %}">Delete</a>
</h2>
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Create" />
</form>
{% endblock %}
3 changes: 1 addition & 2 deletions imager_images/templates/library.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
{% block stylesheets %}
<link rel="stylesheet" type="text/css" href="{% static 'imager_images/css/library.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'imager_images/css/lightbox.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'imager_images/css/screen.css' %}" />
<script src="{% static 'imager_images/js/jquery-1.11.0.min.js' %}"></script>
<script src="{% static 'imager_images/js/lightbox.min.js' %}"></script>
{% endblock %}
Expand All @@ -21,7 +20,7 @@
<a href="{{ thumb.url }}" data-lightbox="albumcovers" data-title="{{album.description}}">
<img src="{{ thumb.url }}"></a>
{% empty %}
<img src="{% static 'img/imager_images/man.png' %}">
<img src="{% static 'imager_images/img/man.png' %}">
{% endthumbnail %}
<p>{{album.title}}</p>
</li>
Expand Down
4 changes: 4 additions & 0 deletions imager_images/templates/new_album_form.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Create" />
</form>
10 changes: 10 additions & 0 deletions imager_images/templates/photo_confirm_delete.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{% extends "../../imager/templates/home.html" %}
{% block title %}Photo: {{user}}{% endblock %}

{% block body %}
<form action="" method="post">{% csrf_token %}
<p>Are you sure you want to delete "{{ object }}"?</p>
<input type="submit" value="Confirm" />
</form>
{% endblock %}

12 changes: 12 additions & 0 deletions imager_images/templates/photo_form.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{% extends "../../imager/templates/home.html" %}
{% block title %}Photo: {{user}}{% endblock %}

{% block body %}
<h2>
<a href="{% url 'images:photo_delete' object.pk %}">Delete</a>
</h2>
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Create" />
</form>
{% endblock %}
1 change: 1 addition & 0 deletions imager_images/templates/photoadd_form.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{forms.as_p}}
27 changes: 25 additions & 2 deletions imager_images/urls.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,31 @@
from django.conf.urls import patterns, url
from imager_images.views import AlbumCreate, AlbumUpdate, AlbumDelete
from imager_images.views import PhotoAddView, PhotoUpdateView, PhotoDeleteView
from django.contrib.auth.decorators import login_required

urlpatterns = patterns('',
# Examples:
url(r'library/',
'imager_images.views.library', name='library'),
url(r'stream/', 'imager_images.views.stream', name='stream')
'imager_images.views.library',
name='library'),
url(r'stream/', 'imager_images.views.stream',
name='stream'),
url(r'album/add/$',
login_required(AlbumCreate.as_view()),
name='album_add'),
url(r'album/update/(?P<pk>\d+)/$',
AlbumUpdate.as_view(),
name='album_update'),
url(r'album/delete/(?P<pk>\d+)/$',
AlbumDelete.as_view(),
name='album_delete'),
url(r'^photo/add/$',
login_required(PhotoAddView.as_view()),
name='photo_add'),
url(r'^photo/update/(?P<pk>\d+)/$',
login_required(PhotoUpdateView.as_view()),
name='photo_update'),
url(r'^photo/delete/(?P<pk>\d+)/$',
login_required(PhotoDeleteView.as_view()),
name='photo_delete')
)
93 changes: 91 additions & 2 deletions imager_images/views.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from imager_images.models import Photo
from django.views.generic import CreateView, UpdateView, DeleteView
from imager_images.models import Photo, Album
from django.core.urlresolvers import reverse_lazy
from django.contrib.auth.views import redirect_to_login
from imager_images.forms import PhotoUpdateViewForm


@login_required
def library(request):
# import pdb; pdb.set_trace();
context = {'albums': request.user.albums.all()}
return render(request, 'library.html', context)

Expand All @@ -17,3 +21,88 @@ def stream(request):
user__in=stream_users).filter(
published__in=['pub', 'shd']).order_by('date_published')}
return render(request, 'stream.html', context)


class AlbumCreate(CreateView):
template_name = "new_album_form.html"
model = Album
fields = ['title', 'description', 'photos', 'published']


class AlbumUpdate(UpdateView):
def user_passes_test(self, request):
if request.user.is_authenticated():
self.object = self.get_object()
return self.object.user == request.user
return False

def dispatch(self, request, *args, **kwargs):
if not self.user_passes_test(request):
return redirect_to_login(request.get_full_path())
return super(PhotoUpdateView, self).dispatch(
request, *args, **kwargs)

model = Album
field = ['title', 'description', 'published']


class AlbumDelete(DeleteView):
def user_passes_test(self, request):
if request.user.is_authenticated():
self.object = self.get_object()
return self.object.user == request.user
return False

def dispatch(self, request, *args, **kwargs):
if not self.user_passes_test(request):
return redirect_to_login(request.get_full_path())
return super(PhotoUpdateView, self).dispatch(
request, *args, **kwargs)

model = Album


class PhotoAddView(CreateView):
template_name = 'photo_form.html'
model = Photo
fields = ('image',
'title',
'description',
'published',
)


class PhotoUpdateView(UpdateView):
def user_passes_test(self, request):
if request.user.is_authenticated():
self.object = self.get_object()
return self.object.user == request.user
return False

def dispatch(self, request, *args, **kwargs):
if not self.user_passes_test(request):
return redirect_to_login(request.get_full_path())
return super(PhotoUpdateView, self).dispatch(
request, *args, **kwargs)

form_class = PhotoUpdateViewForm
model = Photo
template_name = 'photo_form.html'


class PhotoDeleteView(DeleteView):
def user_passes_test(self, request):
if request.user.is_authenticated():
self.object = self.get_object()
return self.object.user == request.user
return False

def dispatch(self, request, *args, **kwargs):
if not self.user_passes_test(request):
return redirect_to_login(request.get_full_path())
return super(PhotoUpdateView, self).dispatch(
request, *args, **kwargs)

template_name = 'photo_confirm_delete.html'
model = Photo
success_url = reverse_lazy('images:library')
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
Django==1.7.5
django-debug-toolbar==1.3.0
django-grappelli==2.6.3
django-phonenumber-field==0.7.1
django-registration-redux==1.1
Expand All @@ -8,3 +9,4 @@ Pillow==2.7.0
postgres==2.1.2
psycopg2==2.6
sorl-thumbnail==12.2
sqlparse==0.1.14