Skip to content

Commit c8c3b72

Browse files
committed
initial stuff
1 parent b0ec277 commit c8c3b72

File tree

15 files changed

+216
-2
lines changed

15 files changed

+216
-2
lines changed

CHANGES.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
1.0.0
2+
=====
3+
Initial version

README.md

100644100755
+4-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
# djinn_likes
2-
Likes module for Djinn Intranet
1+
djinn_likes
2+
===================
3+
4+
Djinn module for adding likes to various content_types

djinn_likes/__init__.py

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from urls import urlpatterns
2+
3+
def get_urls():
4+
5+
return urlpatterns
6+
7+
def get_js():
8+
9+
return ["djinn_likes.js"]
10+
11+
def get_css():
12+
13+
return ["djinn_likes.css"]

djinn_likes/admin.py

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from django.contrib import admin
2+
from models.likes import Like
3+
4+
5+
class LikeAdmin(admin.ModelAdmin):
6+
7+
list_display = ('content_object', 'user', 'created', )
8+
list_filter = ['created', ]
9+
search_fields = ['user', ]
10+
11+
readonly_fields = ['created']
12+
13+
admin.site.register(Like, LikeAdmin)

djinn_likes/forms/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
""" Being there """

djinn_likes/forms/likes.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from django import forms
2+
from django.utils.translation import ugettext_lazy as _
3+
from djinn_contenttypes.forms.base import BaseForm
4+
from djinn_likes.models.likes import Like
5+
6+
7+
class LikeForm(BaseForm):
8+
9+
@property
10+
def labels(self):
11+
12+
return {'submit': _('Save like'),
13+
'cancel': _('Cancel'),
14+
'header': _('Add like')}
15+
16+
class Meta(BaseForm.Meta):
17+
model = Like
18+
fields = ('content_type', 'object_id', 'user')

djinn_likes/models/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from likes import Like

djinn_likes/models/likeable.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from djinn_likes.models import Like
2+
3+
4+
class LikeableMixin(object):
5+
6+
def likes(self):
7+
8+
return Like.objects.filter(content_type=self.ct_class,
9+
object_id=self.id)
10+
11+
def likes_count(self):
12+
13+
return self.likes().count()
14+
15+
def is_liked_by(self, user):
16+
17+
return self.likes.filter(user=user).exists()
18+

djinn_likes/models/likes.py

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from django.contrib.contenttypes import generic
2+
from django.contrib.contenttypes.models import ContentType
3+
from django.db import models
4+
from django.utils.translation import ugettext_lazy as _
5+
from djinn_contenttypes.registry import CTRegistry
6+
from django.contrib.auth.models import User
7+
8+
9+
class Like(models.Model):
10+
11+
content_type = models.ForeignKey(ContentType)
12+
object_id = models.PositiveIntegerField()
13+
content_object = generic.GenericForeignKey('content_type',
14+
'object_id')
15+
user = models.ForeignKey(User)
16+
created = models.DateTimeField(auto_now_add=True, auto_now=False)
17+
18+
def __unicode__(self):
19+
20+
return u"%d" % self.id
21+
22+
class Meta:
23+
app_label = 'djinn_likes'
24+
ordering = ('-created', )
25+
26+
27+
CTRegistry.register("like",
28+
{"class": Like,
29+
"app": "djinn_announcements",
30+
"label": _("Like"),
31+
"global_add": False,
32+
"add_permission": "djinn_likes.add_like",
33+
"filter_label": _("Like"),
34+
"name_plural": _("Likes")})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<br />
2+
object: {{ content_obj }}<br />
3+
likes enabled: {{ likes_enabled }}<br />
4+
content_type: {{ content_type }}<br />
5+
count: {{ content_obj.likes_count }}<br />

djinn_likes/templatetags/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
""" Being there """
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from django import template
2+
3+
# from likes.utils import can_vote, likes_enabled
4+
from utils import likes_enabled
5+
6+
register = template.Library()
7+
8+
@register.inclusion_tag('djinn_likes/includes/likes_block.html', takes_context=True)
9+
def likes(context, obj, template=None):
10+
if template is None:
11+
template = 'djinn_likes/includes/likes.html'
12+
13+
request = context['request']
14+
15+
context.update({
16+
'template': template,
17+
'content_obj': obj,
18+
'likes_enabled': likes_enabled(obj, request),
19+
'content_type': "-".join((obj._meta.app_label, obj._meta.module_name)),
20+
})
21+
return context

djinn_likes/urls.py

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from django.conf.urls import patterns, url, include
2+
from djinn_contenttypes.views.utils import generate_model_urls
3+
#from models import
4+
5+
6+
_urlpatterns = patterns(
7+
"",
8+
9+
# # Viewlet
10+
# url(r"^$",
11+
# AnnouncementViewlet.as_view(),
12+
# name="djinn_announcements"),
13+
#
14+
# url(r"^priority$",
15+
# PriorityAnnouncementViewlet.as_view(),
16+
# name="djinn_priority_announcements"),
17+
#
18+
# url(r"^service$",
19+
# ServiceAnnouncementViewlet.as_view(),
20+
# name="djinn_service_announcements"),
21+
#
22+
)
23+
24+
urlpatterns = patterns(
25+
'',
26+
27+
(r'^announcements/', include(_urlpatterns)),
28+
# (r'^announcements/', include(generate_model_urls(Announcement))),
29+
# (r'^announcements/', include(generate_model_urls(ServiceAnnouncement))),
30+
# (r'^announcements/', include(generate_model_urls(AnnouncementUpdate))),
31+
)

djinn_likes/utils.py

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
def likes_enabled(obj, request):
3+
4+
if not hasattr(obj.__class__, 'likes'):
5+
return False
6+
7+
return True

setup.py

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import os
2+
3+
from setuptools import setup, find_packages
4+
5+
here = os.path.abspath(os.path.dirname(__file__))
6+
README = open(os.path.join(here, 'README.md')).read()
7+
CHANGES = open(os.path.join(here, 'CHANGES.txt')).read()
8+
9+
requires = [
10+
'django',
11+
'djinn_contenttypes',
12+
'djinn_forms',
13+
]
14+
15+
setup(name='djinn_likes',
16+
version="1.0.0",
17+
description='Djinn Intranet Likes',
18+
long_description=README + '\n\n' + CHANGES,
19+
classifiers=[
20+
"Development Status :: 5 - Production/Stable",
21+
"Framework :: Django",
22+
"Intended Audience :: Developers",
23+
"License :: Freely Distributable",
24+
"Programming Language :: Python",
25+
"Topic :: Internet :: WWW/HTTP :: Site Management",
26+
"Topic :: Software Development :: Libraries :: "
27+
"Application Frameworks"
28+
],
29+
author='PythonUnited',
30+
author_email='[email protected]',
31+
license='beer-ware',
32+
url='https://github.com/PythonUnited/djinn-likes',
33+
keywords='Djinn Core',
34+
packages=find_packages(),
35+
include_package_data=True,
36+
zip_safe=False,
37+
install_requires=requires,
38+
tests_require=requires,
39+
test_suite="djinn-likes",
40+
entry_points="""\
41+
[djinn.app]
42+
urls=djinn_likes:get_urls
43+
js=djinn_likes:get_js
44+
css=djinn_likes:get_css
45+
"""
46+
)

0 commit comments

Comments
 (0)