Skip to content
This repository has been archived by the owner on Jul 22, 2022. It is now read-only.

Commit

Permalink
Merge pull request #32 from makyo/tags
Browse files Browse the repository at this point in the history
First pass at tags
  • Loading branch information
makyo committed Oct 31, 2016
2 parents bcc7c48 + b0a0589 commit cb1af93
Show file tree
Hide file tree
Showing 28 changed files with 525 additions and 72 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ coverage.xml

# Django stuff:
*.log
db.sqlite3
local_settings.py

# Flask stuff:
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
APPLICATIONS := activitystream administration core promotion publishers social submissions usermgmt
APPLICATIONS := activitystream administration core promotion publishers social submissions tags usermgmt
APPLICATIONS_COMMA := $(shell echo $(APPLICATIONS) | tr ' ' ',')

.PHONY: run
Expand Down
20 changes: 20 additions & 0 deletions activitystream/migrations/0006_auto_20161031_0621.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.2 on 2016-10-31 06:21
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('activitystream', '0005_auto_20161030_0724'),
]

operations = [
migrations.AlterField(
model_name='activity',
name='activity_type',
field=models.CharField(choices=[('user:reg', 'user: registered'), ('user:login', 'user: logged in'), ('user:logout', 'user: logged out'), ('user:pwchange', 'user: password changed'), ('user:pwreset', 'user: password reset'), ('profile:update', 'user: profile updated'), ('profile:view', 'user: profile viewed'), ('adminflag:create', 'administration flag: created'), ('adminflag:update', 'administration flag: updated'), ('adminflag:delete', 'administration flag: deleted'), ('adminflag:view', 'administration flag: viewed'), ('group:create', 'group: created'), ('group:update', 'group: updated'), ('group:delete', 'group: deleted'), ('social:watch', 'social: watch user'), ('social:unwatch', 'social: unwatch user'), ('social:block', 'social: block user'), ('social:unblock', 'social: unblock user'), ('social:message', 'social: message user'), ('social:favorite', 'social: favorite submission'), ('social:unfavorite', 'social: unfavorite submission'), ('social:rate', 'social: rate submission'), ('social:enjoy', 'social: enjoy submission'), ('submission:create', 'submission: created'), ('submission:update', 'submission: updated'), ('submission:delete', 'submission: deleted'), ('submission:view', 'submission: viewed'), ('folder:create', 'folder: created'), ('folder:update', 'folder: updated'), ('folder:delete', 'folder: deleted'), ('folder:view', 'folder: viewed'), ('folder:sort', 'folder: sorted'), ('tag:create', 'tag: tag created'), ('tag:tag', 'tag: tagged item created'), ('comment:create', 'comment: created'), ('comment:update', 'comment: updated'), ('comment:delete', 'comment: deleted'), ('promotion:create', 'promotion: created'), ('promotion:retire', 'promotion: retired'), ('ad:create', 'ad: created,'), ('ad:update', 'ad: update'), ('ad:golive', 'ad: went live'), ('ad:retire', 'ad: retired'), ('publisher:create', 'publisher: created'), ('publisher:update', 'publisher: updated'), ('publisher:delete', 'publisher: deleted'), ('publisher:view', 'publisher: viewed'), ('publisher:claimed', 'publisher: claimed'), ('search:basic_search', 'search: basic search run')], max_length=50),
),
]
30 changes: 30 additions & 0 deletions core/static/app/base.css
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,13 @@ body {
font-size: 13pt;
font-family: "EB Garamond", serif;
background-color: #f8f8f8;
box-shadow: 0 1px 2px rgba(0,0,0,.05)
border: 1px solid transparent;
border-radius: 4px;
margin-top: 2em;
margin-bottom: 2em;
padding: 1em;

}

.profile-tabs {
Expand Down Expand Up @@ -108,7 +112,33 @@ footer img {
vertical-align: text-top;
}

@media (min-width: 992px) {
.submission-description {
float: left;
width: 65%;
padding-bottom: 2em;
}
.text-block {
clear: left;
}
.text-block.less-top-margin {
margin-top: 1em;
}
.submission-details {
float: right;
width: 33%;
padding: 0 0 1em 1em;
margin-right: 1em;
}
.tag-cloud a {
display: inline-block;
margin: 0 10px;
}
}
@media (max-width: 992px) {
.submission-details {
width: 100%;
}
footer div {
text-align: right;
}
Expand Down
Binary file modified db.sqlite3
Binary file not shown.
1 change: 1 addition & 0 deletions honeycomb/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
'promotion',
'activitystream',
'administration',
'tags',
'taggit',
'haystack',
'django_nose',
Expand Down
6 changes: 5 additions & 1 deletion honeycomb/urls.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls import (
include,
url,
)
from django.conf.urls.static import static
from django.contrib import admin

Expand All @@ -11,5 +14,6 @@
url('^', include('social.urls')),
url('^', include('core.urls')),
url('^', include('submissions.urls')),
url('^tags/', include('tags.urls')),
url('^activity/', include('activitystream.urls')),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
9 changes: 2 additions & 7 deletions submissions/folder_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
from django.contrib.auth.models import User
from django.core.paginator import (
EmptyPage,
PageNotAnInteger,
Paginator,
)
from django.core.urlresolvers import reverse
Expand All @@ -24,7 +23,7 @@
from core.templatetags.gravatar import gravatar


def view_root_level_folders(request, username=None, page=None):
def view_root_level_folders(request, username=None, page=1):
user = get_object_or_404(User, username=username)
folders = user.folder_set.filter(parent=None)
members = Submission.objects.filter(owner=user) \
Expand All @@ -34,8 +33,6 @@ def view_root_level_folders(request, username=None, page=None):
request.user.is_authenticated else 25)
try:
submissions = paginator.page(page)
except PageNotAnInteger:
submissions = paginator.page(1)
except EmptyPage:
submissions = paginator.page(paginator.num_pages)
title = "{} {}'s folders".format(
Expand All @@ -55,7 +52,7 @@ def view_root_level_folders(request, username=None, page=None):


def view_folder(request, username=None, folder_id=None, folder_slug=None,
page=None):
page=1):
folder = get_object_or_404(Folder, id=folder_id)
if username != folder.owner.username or folder_slug != folder.slug:
return redirect(reverse('submissions:view_folder', kwargs={
Expand All @@ -71,8 +68,6 @@ def view_folder(request, username=None, folder_id=None, folder_slug=None,
request.user.is_authenticated else 25)
try:
submissions = paginator.page(page)
except PageNotAnInteger:
submissions = paginator.page(1)
except EmptyPage:
submissions = paginator.page(paginator.num_pages)
title = "{} {}'s folders".format(
Expand Down
1 change: 1 addition & 0 deletions submissions/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class Meta:
'restricted_to_groups',
'allowed_groups',
'folders',
'tags',
)


Expand Down
22 changes: 22 additions & 0 deletions submissions/migrations/0005_submission_tags.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.2 on 2016-10-31 06:21
from __future__ import unicode_literals

from django.db import migrations
import taggit.managers


class Migration(migrations.Migration):

dependencies = [
('taggit', '0002_auto_20150616_2121'),
('submissions', '0004_auto_20161028_2240'),
]

operations = [
migrations.AddField(
model_name='submission',
name='tags',
field=taggit.managers.TaggableManager(blank=True, help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'),
),
]
21 changes: 21 additions & 0 deletions submissions/migrations/0006_auto_20161031_0625.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.2 on 2016-10-31 06:25
from __future__ import unicode_literals

from django.db import migrations
import taggit.managers


class Migration(migrations.Migration):

dependencies = [
('submissions', '0005_submission_tags'),
]

operations = [
migrations.AlterField(
model_name='submission',
name='tags',
field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'),
),
]
2 changes: 2 additions & 0 deletions submissions/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from django.db import models
from django.template.defaultfilters import slugify
from django.utils.html import strip_tags
from taggit.managers import TaggableManager

from honeycomb_markdown import HoneycombMarkdown
from usermgmt.group_models import FriendGroup
Expand Down Expand Up @@ -58,6 +59,7 @@ class Submission(models.Model):
rating_average = models.DecimalField(max_digits=3, decimal_places=2,
default=0.0)
rating_count = models.PositiveIntegerField(default=0)
tags = TaggableManager()

def save(self, *args, **kwargs):
self.slug = slugify(self.title)
Expand Down
7 changes: 7 additions & 0 deletions submissions/templates/edit_submission.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@
<p class="help-block">{{ form.content_raw.help_text|safe }}</p>
{% endif %}
</div>
<div class="form-group">
{{ form.tags.label_tag }}
{{ form.tags|append_form_control }}
{% if form.tags.help_text %}
<p class="help-block">{{ form.tags.help_text|safe }}</p>
{% endif %}
</div>
<div class="form-group">
{{ form.content_file.label_tag }}
{{ form.content_file|append_form_control }}
Expand Down
6 changes: 6 additions & 0 deletions submissions/templates/submission-list-snippet.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,9 @@
Favorites: {{ submission.favorited_by.count }} -
{% if submission.can_enjoy %}Submission enjoyed {{ submission.enjoy_votes }} times{% endif %}
</p>
<p>
Tags:
{% for tag in submission.tags.all|slice:":10" %}
<a href="{% url 'tags:view_tag' tag_slug=tag.slug %}">{{ tag }}</a>{% if not forloop.last %}, {% else %}{% if submission.tags.count > 10 %}...{% endif %}{% endif %}
{% endfor %}
</p>
76 changes: 44 additions & 32 deletions submissions/templates/view_submission.html
Original file line number Diff line number Diff line change
@@ -1,43 +1,55 @@
{% extends "base.html" %}

{% block content %}
{% if user == submission.owner %}
<div class="row">
<div class="col-md-12 text-right">
<p>
<a role="button" class="btn btn-default" href="{% url 'submissions:edit_submission' username=submission.owner.username submission_id=submission.id submission_slug=submission.slug %}"><span class="glyphicon glyphicon-edit"></span> Edit submission</a>
<a role="button" class="btn btn-danger" href="{% url 'submissions:delete_submission' username=submission.owner.username submission_id=submission.id submission_slug=submission.slug %}"><span class="glyphicon glyphicon-remove"></span> Delete submission</a>
</p>
</div>
</div>
{% endif %}
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<a data-toggle="collapse" data-target="#collapse-submission-info" aria-expanded="false" aria-controls="collapseInfo">
Submission information <span class="caret"></span>
</a>
<div class="col-md-8 col-md-offset-2">
{% if submission.description_rendered %}
<div class="submission-description clearfix">
<p><strong>Description</strong></p>
{{ submission.description_rendered|safe }}
</div>
<div class="panel-body collapse" id="collapse-submission-info">
{% if submission.description_rendered %}
{{ submission.description_rendered|safe }}
{% else %}
<em>No description provided</em>
{% endif %}
<div class="panel panel-default submission-details">
<div class="panel-body">
<dl>
<dt>Views</dt>
<dd>{{ submission.views }}</dd>
<dt>Rating</dt>
<dd><span data-toggle="tooltip" data-placement="bottom" title="{{ submission.rating_average|floatformat }} average out of {{ submission.rating_count }} ratings">{{ submission.rating_stars|safe }}</span></dd>
<dt>Favorites</dt>
<dd>{{ submission.favorited_by.count }}</dd>
{% if submission.can_enjoy %}
<dt>Enjoy votes</dt>
<dd>Submission enjoyed {{ submission.enjoy_votes }} times</dd>
{% endif %}
<dt>Tags</dt>
<dd>
{% for tag in submission.tags.all %}
<a href="{% url 'tags:view_tag' tag_slug=tag.slug %}">{{ tag }}</a>{% if not forloop.last %},{% endif%}
{% endfor %}
</dd>
</dl>
{% if user == submission.owner %}
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Submission actions <span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li>
<a href="{% url 'submissions:edit_submission' username=submission.owner.username submission_id=submission.id submission_slug=submission.slug %}"><span class="glyphicon glyphicon-edit"></span> Edit submission</a>
</li>
<li>
<a href="{% url 'submissions:delete_submission' username=submission.owner.username submission_id=submission.id submission_slug=submission.slug %}"><span class="glyphicon glyphicon-remove"></span> Delete submission</a>
</li>
<li><a href="#"><span class="glyphicon glyphicon-usd"></span> Promote submission</a></li>
</ul>
</div>
{% endif %}
</div>
<div class="panel-footer text-center">
Views: {{ submission.views }} -
Rating: <span data-toggle="tooltip" data-placement="bottom" title="{{ submission.rating_average|floatformat }} average out of {{ submission.rating_count }} ratings">{{ submission.rating_stars|safe }}</span> -
Favorites: {{ submission.favorited_by.count }} -
{% if submission.can_enjoy %}Submission enjoyed {{ submission.enjoy_votes }} times{% endif %}
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-8 col-md-offset-2 text-block">
{{ submission.content_rendered|safe }}
<div class="text-block{% if not submission.description_rendered %} less-top-margin{% endif %}">
{{ submission.content_rendered|safe }}
</div>
</div>
</div>
{% if user.is_authenticated and user != submission.owner %}
Expand Down
Loading

0 comments on commit cb1af93

Please sign in to comment.