Show More
@@ -0,0 +1,31 b'' | |||
|
1 | {% extends "boards/base.html" %} | |
|
2 | ||
|
3 | {% load i18n %} | |
|
4 | {% load static %} | |
|
5 | ||
|
6 | {% block head %} | |
|
7 | <title>{{ site_name }}</title> | |
|
8 | {% endblock %} | |
|
9 | ||
|
10 | {% block content %} | |
|
11 | <div class="post"> | |
|
12 | <div class="landing-images"> | |
|
13 | {% for image in images %} | |
|
14 | <div class="gallery_image"> | |
|
15 | {{ image.get_view|safe }} | |
|
16 | {% with image.get_random_associated_post as post %} | |
|
17 | {{ post.get_link_view|safe }} | |
|
18 | {% endwith %} | |
|
19 | </div> | |
|
20 | {% endfor %} | |
|
21 | </div> | |
|
22 | <div class="landing-tags"> | |
|
23 | {{ section_str|safe }} | |
|
24 | </div> | |
|
25 | <div class="landing-threads"> | |
|
26 | {% for op in latest_threads %} | |
|
27 | {{ op.get_link_view|safe }} {{ op.get_title_or_text }}<br /> | |
|
28 | {% endfor %} | |
|
29 | </div> | |
|
30 | </div> | |
|
31 | {% endblock %} |
@@ -0,0 +1,32 b'' | |||
|
1 | from django.shortcuts import render | |
|
2 | from django.utils.decorators import method_decorator | |
|
3 | from django.views.decorators.csrf import csrf_protect | |
|
4 | ||
|
5 | from boards.views.base import BaseBoardView | |
|
6 | from boards.models import Tag, Post, Attachment | |
|
7 | ||
|
8 | ||
|
9 | PARAM_SECTION_STR = 'section_str' | |
|
10 | PARAM_LATEST_THREADS = 'latest_threads' | |
|
11 | PARAM_IMAGES = 'images' | |
|
12 | ||
|
13 | TEMPLATE = 'boards/landing.html' | |
|
14 | ||
|
15 | MAX_NEW_THREADS = 10 | |
|
16 | RANDOM_IMAGE_COUNT = 3 | |
|
17 | ||
|
18 | ||
|
19 | class LandingView(BaseBoardView): | |
|
20 | @method_decorator(csrf_protect) | |
|
21 | def get(self, request): | |
|
22 | params = dict() | |
|
23 | ||
|
24 | params[PARAM_SECTION_STR] = Tag.objects.get_tag_url_list( | |
|
25 | Tag.objects.filter(required=True)) | |
|
26 | params[PARAM_LATEST_THREADS] = Post.objects.filter(opening=True)\ | |
|
27 | .order_by('-pub_time')[:MAX_NEW_THREADS] | |
|
28 | params[PARAM_IMAGES] = Attachment.objects.get_random_images( | |
|
29 | RANDOM_IMAGE_COUNT) | |
|
30 | ||
|
31 | return render(request, TEMPLATE, params) | |
|
32 |
@@ -1,175 +1,186 b'' | |||
|
1 | 1 | .ui-button { |
|
2 | 2 | display: none; |
|
3 | 3 | } |
|
4 | 4 | |
|
5 | 5 | .ui-dialog-content { |
|
6 | 6 | padding: 0; |
|
7 | 7 | min-height: 0; |
|
8 | 8 | } |
|
9 | 9 | |
|
10 | 10 | .mark_btn { |
|
11 | 11 | cursor: pointer; |
|
12 | 12 | } |
|
13 | 13 | |
|
14 | 14 | .img-full { |
|
15 | 15 | position: fixed; |
|
16 | 16 | background-color: #CCC; |
|
17 | 17 | border: 1px solid #000; |
|
18 | 18 | cursor: pointer; |
|
19 | 19 | } |
|
20 | 20 | |
|
21 | 21 | .strikethrough { |
|
22 | 22 | text-decoration: line-through; |
|
23 | 23 | } |
|
24 | 24 | |
|
25 | 25 | .post_preview { |
|
26 | 26 | z-index: 300; |
|
27 | 27 | position:absolute; |
|
28 | 28 | } |
|
29 | 29 | |
|
30 | 30 | .gallery_image { |
|
31 | 31 | display: inline-block; |
|
32 | 32 | } |
|
33 | 33 | |
|
34 | 34 | @media print { |
|
35 | 35 | .post-form-w { |
|
36 | 36 | display: none; |
|
37 | 37 | } |
|
38 | 38 | } |
|
39 | 39 | |
|
40 | 40 | input[name="image"] { |
|
41 | 41 | display: block; |
|
42 | 42 | width: 100px; |
|
43 | 43 | height: 100px; |
|
44 | 44 | cursor: pointer; |
|
45 | 45 | position: absolute; |
|
46 | 46 | opacity: 0; |
|
47 | 47 | z-index: 1; |
|
48 | 48 | } |
|
49 | 49 | |
|
50 | 50 | .file_wrap { |
|
51 | 51 | width: 100px; |
|
52 | 52 | height: 100px; |
|
53 | 53 | border: solid 1px white; |
|
54 | 54 | display: inline-block; |
|
55 | 55 | } |
|
56 | 56 | |
|
57 | 57 | form > .file_wrap { |
|
58 | 58 | float: left; |
|
59 | 59 | } |
|
60 | 60 | |
|
61 | 61 | .file-thumb { |
|
62 | 62 | width: 100px; |
|
63 | 63 | height: 100px; |
|
64 | 64 | background-size: cover; |
|
65 | 65 | background-position: center; |
|
66 | 66 | } |
|
67 | 67 | |
|
68 | 68 | .compact-form-text { |
|
69 | 69 | margin-left:110px; |
|
70 | 70 | } |
|
71 | 71 | |
|
72 | 72 | textarea, input { |
|
73 | 73 | -moz-box-sizing: border-box; |
|
74 | 74 | -webkit-box-sizing: border-box; |
|
75 | 75 | box-sizing: border-box; |
|
76 | 76 | } |
|
77 | 77 | |
|
78 | 78 | .compact-form-text > textarea { |
|
79 | 79 | height: 100px; |
|
80 | 80 | width: 100%; |
|
81 | 81 | } |
|
82 | 82 | |
|
83 | 83 | .post-button-form { |
|
84 | 84 | display: inline; |
|
85 | 85 | } |
|
86 | 86 | |
|
87 | 87 | .post-button-form > button, #autoupdate { |
|
88 | 88 | border: none; |
|
89 | 89 | margin: inherit; |
|
90 | 90 | padding: inherit; |
|
91 | 91 | background: none; |
|
92 | 92 | font-size: inherit; |
|
93 | 93 | cursor: pointer; |
|
94 | 94 | } |
|
95 | 95 | |
|
96 | 96 | #form-close-button { |
|
97 | 97 | display: none; |
|
98 | 98 | } |
|
99 | 99 | |
|
100 | 100 | .post-image-full { |
|
101 | 101 | width: 100%; |
|
102 | 102 | height: auto; |
|
103 | 103 | } |
|
104 | 104 | |
|
105 | 105 | #preview-text { |
|
106 | 106 | display: none; |
|
107 | 107 | } |
|
108 | 108 | |
|
109 | 109 | .random-images-table { |
|
110 | 110 | text-align: center; |
|
111 | 111 | width: 100%; |
|
112 | 112 | } |
|
113 | 113 | |
|
114 | 114 | .random-images-table > div { |
|
115 | 115 | margin-left: auto; |
|
116 | 116 | margin-right: auto; |
|
117 | 117 | } |
|
118 | 118 | |
|
119 | 119 | .tag-image, .tag-text-data { |
|
120 | 120 | display: inline-block; |
|
121 | 121 | } |
|
122 | 122 | |
|
123 | 123 | .tag-text-data > h2 { |
|
124 | 124 | margin: 0; |
|
125 | 125 | } |
|
126 | 126 | |
|
127 | 127 | .tag-image { |
|
128 | 128 | margin-right: 5px; |
|
129 | 129 | } |
|
130 | 130 | |
|
131 | 131 | .reply-to-message { |
|
132 | 132 | display: none; |
|
133 | 133 | } |
|
134 | 134 | |
|
135 | 135 | .tripcode { |
|
136 | 136 | padding: 2px; |
|
137 | 137 | } |
|
138 | 138 | |
|
139 | 139 | #fav-panel { |
|
140 | 140 | display: none; |
|
141 | 141 | margin: 1ex; |
|
142 | 142 | } |
|
143 | 143 | |
|
144 | 144 | .hidden_post { |
|
145 | 145 | opacity: 0.2; |
|
146 | 146 | } |
|
147 | 147 | |
|
148 | 148 | .hidden_post:hover { |
|
149 | 149 | opacity: 1; |
|
150 | 150 | } |
|
151 | 151 | |
|
152 | 152 | .monochrome > .image > .thumb > img { |
|
153 | 153 | filter: grayscale(100%); |
|
154 | 154 | -webkit-filter: grayscale(100%); |
|
155 | 155 | } |
|
156 | 156 | |
|
157 | 157 | #quote-button { |
|
158 | 158 | position: absolute; |
|
159 | 159 | display: none; |
|
160 | 160 | cursor: pointer; |
|
161 | 161 | z-index: 400; |
|
162 | 162 | } |
|
163 | 163 | |
|
164 | 164 | .required-field:before { |
|
165 | 165 | content: '* '; |
|
166 | 166 | } |
|
167 | 167 | |
|
168 | 168 | .hint { |
|
169 | 169 | border-bottom: dashed 1px; |
|
170 | 170 | cursor: help; |
|
171 | 171 | } |
|
172 | 172 | |
|
173 | 173 | .url-image:hover { |
|
174 | 174 | filter: invert(100%); |
|
175 | 175 | } |
|
176 | ||
|
177 | .landing-tags, .landing-threads, .landing-images { | |
|
178 | max-width: 800px; | |
|
179 | margin-left: auto; | |
|
180 | margin-right: auto; | |
|
181 | } | |
|
182 | ||
|
183 | .landing-images { | |
|
184 | text-align: center; | |
|
185 | } | |
|
186 |
@@ -1,94 +1,93 b'' | |||
|
1 | 1 | {% load staticfiles %} |
|
2 | 2 | {% load i18n %} |
|
3 | 3 | {% load l10n %} |
|
4 | 4 | {% load static from staticfiles %} |
|
5 | 5 | |
|
6 | 6 | <!DOCTYPE html> |
|
7 | 7 | <html> |
|
8 | 8 | <head> |
|
9 | 9 | <link rel="stylesheet" type="text/css" href="{% static 'css/base.css' %}" media="all"/> |
|
10 | 10 | <link rel="stylesheet" type="text/css" href="{% static 'css/3party/highlight.css' %}" media="all"/> |
|
11 | 11 | <link rel="stylesheet" type="text/css" href="{% static 'css/3party/jquery-ui.min.css' %}" media="all"/> |
|
12 | 12 | <link rel="stylesheet" type="text/css" href="{% static theme_css %}" media="all"/> |
|
13 | 13 | |
|
14 | 14 | {% if rss_url %} |
|
15 | 15 | <link rel="alternate" type="application/rss+xml" href="{{ rss_url }}" title="{% trans 'Feed' %}"/> |
|
16 | 16 | {% endif %} |
|
17 | 17 | |
|
18 | 18 | <link rel="icon" type="image/png" |
|
19 | 19 | href="{% static 'favicon.png' %}"> |
|
20 | 20 | |
|
21 | 21 | <meta name="viewport" content="width=device-width, initial-scale=1"/> |
|
22 | 22 | <meta charset="utf-8"/> |
|
23 | 23 | |
|
24 | 24 | {% block head %}{% endblock %} |
|
25 | 25 | </head> |
|
26 | 26 | <body data-image-viewer="{{ image_viewer }}" |
|
27 | 27 | data-pow-difficulty="{{ pow_difficulty }}" |
|
28 | 28 | data-update-script="{% static 'js/updates.js' %}"> |
|
29 | 29 | <script src="{% static 'js/jquery-2.2.0.min.js' %}"></script> |
|
30 | 30 | |
|
31 | 31 | <header class="navigation_panel"> |
|
32 |
<a class="link" href="{% url ' |
|
|
32 | <a class="link" href="{% url 'landing' %}">{{ site_name }}</a> | |
|
33 | <a class="link" href="{% url 'index' %}">{% trans "All threads" %}</a>, | |
|
33 | 34 | {% if tags_str %} |
|
34 | 35 | <form action="{% url 'index' %}" method="post" class="post-button-form">{% csrf_token %} |
|
35 | 36 | {% if only_favorites %} |
|
36 | 37 | <button name="method" value="toggle_fav" class="fav">β </button>, |
|
37 | 38 | {% else %} |
|
38 | 39 | <button name="method" value="toggle_fav" class="not_fav">β </button>, |
|
39 | 40 | {% endif %} |
|
40 | 41 | </form> |
|
41 | 42 | {{ tags_str|safe }}, |
|
42 | {% else %} | |
|
43 | {% trans 'Add tags' %} β | |
|
44 | 43 | {% endif %} |
|
45 | 44 | <a href="{% url 'tags' 'required'%}" title="{% trans 'Tag management' %}">{% trans "tags" %}</a>, |
|
46 | 45 | <a href="{% url 'search' %}" title="{% trans 'Search' %}">{% trans 'search' %}</a>, |
|
47 | 46 | <a href="{% url 'feed' %}" title="{% trans 'Feed' %}">{% trans 'feed' %}</a>, |
|
48 | 47 | <a href="{% url 'random' %}" title="{% trans 'Random images' %}">{% trans 'images' %}</a>{% if has_fav_threads %}, |
|
49 | 48 | |
|
50 | 49 | <a href="{% url 'feed' %}?favorites" id="fav-panel-btn">{% trans 'favorites' %} <span id="new-fav-post-count" {% if not new_post_count %}style="display: none" {% endif %}>{{ new_post_count }}</span></a> |
|
51 | 50 | {% endif %} |
|
52 | 51 | |
|
53 | 52 | {% if usernames %} |
|
54 | 53 | <a class="right-link link" href="{% url 'notifications' %}" title="{% trans 'Notifications' %}"> |
|
55 | 54 | {% trans 'Notifications' %} |
|
56 | 55 | {% ifnotequal new_notifications_count 0 %} |
|
57 | 56 | (<b>{{ new_notifications_count }}</b>) |
|
58 | 57 | {% endifnotequal %} |
|
59 | 58 | </a> |
|
60 | 59 | {% endif %} |
|
61 | 60 | |
|
62 | 61 | <a class="right-link link" href="{% url 'settings' %}">{% trans 'Settings' %}</a> |
|
63 | 62 | </header> |
|
64 | 63 | |
|
65 | 64 | <div id="fav-panel"><div class="post">{% trans "Loading..." %}</div></div> |
|
66 | 65 | |
|
67 | 66 | {% block content %}{% endblock %} |
|
68 | 67 | |
|
69 | 68 | <script src="{% static 'js/3party/jquery-ui.min.js' %}"></script> |
|
70 | 69 | <script src="{% static 'js/jquery.mousewheel.js' %}"></script> |
|
71 | 70 | <script src="{% static 'js/3party/highlight.min.js' %}"></script> |
|
72 | 71 | |
|
73 | 72 | <script src="{% url 'js_info_dict' %}"></script> |
|
74 | 73 | |
|
75 | 74 | <script src="{% static 'js/popup.js' %}"></script> |
|
76 | 75 | <script src="{% static 'js/image.js' %}"></script> |
|
77 | 76 | <script src="{% static 'js/refpopup.js' %}"></script> |
|
78 | 77 | <script src="{% static 'js/main.js' %}"></script> |
|
79 | 78 | |
|
80 | 79 | <footer class="navigation_panel"> |
|
81 | 80 | {% block metapanel %}{% endblock %} |
|
82 | 81 | {% if rss_url %} |
|
83 | 82 | [<a href="{{ rss_url }}">RSS</a>] |
|
84 | 83 | {% endif %} |
|
85 | 84 | [<a href="{% url 'admin:index' %}">{% trans 'Admin' %}</a>] |
|
86 | 85 | [<a href="{% url 'index' %}?order=pub">{% trans 'New threads' %}</a>] |
|
87 | 86 | {% with ppd=posts_per_day|floatformat:2 %} |
|
88 | 87 | {% blocktrans %}Speed: {{ ppd }} posts per day{% endblocktrans %} |
|
89 | 88 | {% endwith %} |
|
90 | 89 | <a class="link" href="#top" id="up">{% trans 'Up' %}</a> |
|
91 | 90 | </footer> |
|
92 | 91 | |
|
93 | 92 | </body> |
|
94 | 93 | </html> |
@@ -1,37 +1,35 b'' | |||
|
1 | 1 | {% extends "boards/base.html" %} |
|
2 | 2 | |
|
3 | 3 | {% load i18n %} |
|
4 | 4 | |
|
5 | 5 | {% block head %} |
|
6 | 6 | <title>{% trans 'Random images' %} - {{ site_name }}</title> |
|
7 | 7 | {% endblock %} |
|
8 | 8 | |
|
9 | 9 | {% block content %} |
|
10 | 10 | |
|
11 | 11 | {% if images %} |
|
12 | 12 | <div class="random-images-table"> |
|
13 | 13 | <div> |
|
14 | 14 | {% for image in images %} |
|
15 | 15 | <div class="gallery_image"> |
|
16 |
{ |
|
|
17 | {{ image.get_view }} | |
|
18 | {% endautoescape %} | |
|
16 | {{ image.get_view|safe }} | |
|
19 | 17 | {% with image.get_random_associated_post as post %} |
|
20 | 18 | {{ post.get_link_view|safe }} |
|
21 | 19 | <div> |
|
22 | 20 | {% for tag in post.get_thread.get_required_tags.all %} |
|
23 | 21 | {{ tag.get_view|safe }}{% if not forloop.last %},{% endif %} |
|
24 | 22 | {% endfor %} |
|
25 | 23 | </div> |
|
26 | 24 | {% endwith %} |
|
27 | 25 | </div> |
|
28 | 26 | {% if forloop.counter|divisibleby:"3" %} |
|
29 | 27 | </div> |
|
30 | 28 | <div> |
|
31 | 29 | {% endif %} |
|
32 | 30 | {% endfor %} |
|
33 | 31 | </div> |
|
34 | 32 | </div> |
|
35 | 33 | {% endif %} |
|
36 | 34 | |
|
37 | 35 | {% endblock %} |
@@ -1,95 +1,97 b'' | |||
|
1 | 1 | from django.conf.urls import url |
|
2 | 2 | |
|
3 | 3 | import neboard |
|
4 | 4 | |
|
5 | 5 | from boards import views |
|
6 | 6 | from boards.rss import AllThreadsFeed, TagThreadsFeed, ThreadPostsFeed |
|
7 | 7 | from boards.views import api, tag_threads, all_threads, \ |
|
8 | 8 | settings, all_tags, feed, alias |
|
9 | 9 | from boards.views.authors import AuthorsView |
|
10 | 10 | from boards.views.notifications import NotificationView |
|
11 | 11 | from boards.views.static import StaticPageView |
|
12 | 12 | from boards.views.preview import PostPreviewView |
|
13 | 13 | from boards.views.sync import get_post_sync_data, response_get, response_list |
|
14 | 14 | from boards.views.random import RandomImageView |
|
15 | 15 | from boards.views.tag_gallery import TagGalleryView |
|
16 | 16 | from boards.views.translation import cached_javascript_catalog |
|
17 | 17 | from boards.views.search import BoardSearchView |
|
18 | from boards.views.landing import LandingView | |
|
18 | 19 | |
|
19 | 20 | |
|
20 | 21 | js_info_dict = { |
|
21 | 22 | 'packages': ('boards',), |
|
22 | 23 | } |
|
23 | 24 | |
|
24 | 25 | urlpatterns = [ |
|
25 | 26 | # /boards/ |
|
26 | url(r'^$', all_threads.AllThreadsView.as_view(), name='index'), | |
|
27 | url(r'^all/$', all_threads.AllThreadsView.as_view(), name='index'), | |
|
27 | 28 | |
|
28 | 29 | # /boards/tag/tag_name/ |
|
29 | 30 | url(r'^tag/(?P<tag_name>\w+)/$', tag_threads.TagView.as_view(), |
|
30 | 31 | name='tag'), |
|
31 | 32 | |
|
32 | 33 | # /boards/thread/ |
|
33 | 34 | url(r'^thread/(?P<post_id>\d+)/$', views.thread.NormalThreadView.as_view(), |
|
34 | 35 | name='thread'), |
|
35 | 36 | url(r'^thread/(?P<post_id>\d+)/mode/gallery/$', views.thread.GalleryThreadView.as_view(), |
|
36 | 37 | name='thread_gallery'), |
|
37 | 38 | url(r'^thread/(?P<post_id>\d+)/mode/tree/$', views.thread.TreeThreadView.as_view(), |
|
38 | 39 | name='thread_tree'), |
|
39 | 40 | # /feed/ |
|
40 | 41 | url(r'^feed/$', views.feed.FeedView.as_view(), name='feed'), |
|
41 | 42 | |
|
42 | 43 | url(r'^settings/$', settings.SettingsView.as_view(), name='settings'), |
|
43 | 44 | url(r'^aliases/(?P<category>\w+)/$', alias.AliasesView.as_view(), name='aliases'), |
|
44 | 45 | url(r'^tags/(?P<query>\w+)?/?$', all_tags.AllTagsView.as_view(), name='tags'), |
|
45 | 46 | url(r'^authors/$', AuthorsView.as_view(), name='authors'), |
|
46 | 47 | |
|
47 | 48 | url(r'^banned/$', views.banned.BannedView.as_view(), name='banned'), |
|
48 | 49 | url(r'^staticpage/(?P<name>\w+)/$', StaticPageView.as_view(), |
|
49 | 50 | name='staticpage'), |
|
50 | 51 | |
|
51 | 52 | url(r'^random/$', RandomImageView.as_view(), name='random'), |
|
52 | 53 | url(r'^tag/(?P<tag_name>\w+)/gallery/$', TagGalleryView.as_view(), name='tag_gallery'), |
|
53 | 54 | url(r'^search/$', BoardSearchView.as_view(), name='search'), |
|
55 | url(r'^$', LandingView.as_view(), name='landing'), | |
|
54 | 56 | |
|
55 | 57 | # RSS feeds |
|
56 | 58 | url(r'^rss/$', AllThreadsFeed()), |
|
57 | 59 | url(r'^page/(?P<page>\d+)/rss/$', AllThreadsFeed()), |
|
58 | 60 | url(r'^tag/(?P<tag_name>\w+)/rss/$', TagThreadsFeed()), |
|
59 | 61 | url(r'^tag/(?P<tag_name>\w+)/page/(?P<page>\w+)/rss/$', TagThreadsFeed()), |
|
60 | 62 | url(r'^thread/(?P<post_id>\d+)/rss/$', ThreadPostsFeed()), |
|
61 | 63 | |
|
62 | 64 | # i18n |
|
63 | 65 | url(r'^jsi18n/$', cached_javascript_catalog, js_info_dict, |
|
64 | 66 | name='js_info_dict'), |
|
65 | 67 | |
|
66 | 68 | # API |
|
67 | 69 | url(r'^api/post/(?P<post_id>\d+)/$', api.get_post, name="get_post"), |
|
68 | 70 | url(r'^api/diff_thread/$', api.api_get_threaddiff, name="get_thread_diff"), |
|
69 | 71 | url(r'^api/threads/(?P<count>\w+)/$', api.api_get_threads, |
|
70 | 72 | name='get_threads'), |
|
71 | 73 | url(r'^api/tags/$', api.api_get_tags, name='get_tags'), |
|
72 | 74 | url(r'^api/thread/(?P<opening_post_id>\w+)/$', api.api_get_thread_posts, |
|
73 | 75 | name='get_thread'), |
|
74 | 76 | url(r'^api/add_post/(?P<opening_post_id>\w+)/$', api.api_add_post, |
|
75 | 77 | name='add_post'), |
|
76 | 78 | url(r'^api/notifications/(?P<username>\w+)/$', api.api_get_notifications, |
|
77 | 79 | name='api_notifications'), |
|
78 | 80 | url(r'^api/preview/$', api.api_get_preview, name='preview'), |
|
79 | 81 | url(r'^api/new_posts/$', api.api_get_new_posts, name='new_posts'), |
|
80 | 82 | url(r'^api/stickers/$', api.api_get_stickers, name='get_stickers'), |
|
81 | 83 | |
|
82 | 84 | # Sync protocol API |
|
83 | 85 | url(r'^api/sync/list/$', response_list, name='api_sync_list'), |
|
84 | 86 | url(r'^api/sync/get/$', response_get, name='api_sync_get'), |
|
85 | 87 | |
|
86 | 88 | # Notifications |
|
87 | 89 | url(r'^notifications/(?P<username>\w+)/$', NotificationView.as_view(), name='notifications'), |
|
88 | 90 | url(r'^notifications/$', NotificationView.as_view(), name='notifications'), |
|
89 | 91 | |
|
90 | 92 | # Post preview |
|
91 | 93 | url(r'^preview/$', PostPreviewView.as_view(), name='preview'), |
|
92 | 94 | url(r'^post_xml/(?P<post_id>\d+)$', get_post_sync_data, |
|
93 | 95 | name='post_sync_data'), |
|
94 | 96 | ] |
|
95 | 97 |
General Comments 0
You need to be logged in to leave comments.
Login now