Skip to content

Commit 769d837

Browse files
committed
Merge branch 'etherpad' with major security fix
2 parents 18c71ae + 62edd7c commit 769d837

File tree

17 files changed

+248
-85
lines changed

17 files changed

+248
-85
lines changed

BasicArticle/views.py

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -23,25 +23,7 @@
2323
from django.conf import settings
2424
from Recommendation_API.views import get_Recommendations
2525
import json
26-
27-
def getHTML(article):
28-
epclient = EtherpadLiteClient(settings.APIKEY, settings.APIURL)
29-
result = epclient.getHtml(article.id)
30-
return result['html']
31-
32-
# +++++++++++++++++++++++++++++++++++++++++++
33-
34-
35-
def getText(article):
36-
epclient = EtherpadLiteClient(settings.APIKEY, settings.APIURL)
37-
result = epclient.getText(article.id)
38-
return result['text']
39-
40-
# +++++++++++++++++++++++++++++++++++++++++++
41-
42-
def deletePad(article):
43-
epclient = EtherpadLiteClient(settings.APIKEY, settings.APIURL)
44-
epclient.deletePad(article.id)
26+
from etherpad.views import getHTML, getText, deletePad, create_session_community, create_session_group, get_pad_id
4527

4628
def article_autosave(request,pk):
4729
if request.user.is_authenticated:
@@ -252,6 +234,7 @@ def edit_article(request, pk):
252234

253235
try:
254236
cmember = CommunityMembership.objects.get(user =request.user.id, community = article.community.pk)
237+
sessionid = create_session_community(request, article.community.id)
255238
try:
256239
transition = Transitions.objects.get(from_state=article.article.state)
257240
state1 = States.objects.get(name='draft')
@@ -283,6 +266,7 @@ def edit_article(request, pk):
283266
cmember = CommunityMembership.objects.get(user=request.user.id, community = communitygroup.community.pk)
284267
try:
285268
gmember =GroupMembership.objects.get(user=request.user.id, group = article.group.pk)
269+
sessionid = create_session_group(request, article.group.id)
286270
except GroupMembership.DoesNotExist:
287271
gmember = 'FALSE'
288272
try:
@@ -303,7 +287,10 @@ def edit_article(request, pk):
303287
# print ("Hello6")
304288

305289
raise Http404
306-
return render(request, 'edit_article.html', {'article': article, 'cmember':cmember,'gmember':gmember,'message':message, 'belongs_to':belongs_to,'transition': transition, 'private':private,'uname':request.user,'url':settings.SERVERURL})
290+
padid = get_pad_id(article.article.id)
291+
response = render(request, 'edit_article.html', {'article': article, 'cmember':cmember,'gmember':gmember,'message':message, 'belongs_to':belongs_to,'transition': transition, 'private':private,'url':settings.SERVERURL, 'padid':padid})
292+
response.set_cookie('sessionID', sessionid)
293+
return response
307294
else:
308295
return redirect('login')
309296

CollaborationSystem/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
'wiki.plugins.images.apps.ImagesConfig',
7979
'wiki.plugins.macros.apps.MacrosConfig',
8080
'Recommendation_API',
81+
'etherpad',
8182
] + get_machina_apps()
8283

8384
SITE_ID = 1

CollaborationSystem/urls.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,6 @@
5858

5959
url(r'^articles/$', articleview.display_articles, name='display_articles'),
6060
url(r'^article-view/(?P<pk>\d*)/$', articleview.view_article, name='article_view'),
61-
62-
url(r'^ajax/article_autosave/(?P<pk>\d*)/$', articleview.article_autosave, name='article_autosave'),
63-
6461
url(r'^ajax/article_text/(?P<pk>\d*)/$', articleview.article_text, name='article_text'),
6562

6663
url(r'^h5p-view/(?P<pk>\d*)/$', communityview.h5p_view, name='h5p_view'),

Community/views.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
from ast import literal_eval
3131
import json
3232
import requests
33-
# Create your views here.
33+
from etherpad.views import create_community_ether, create_article_ether_community, create_session_community
3434

3535
def display_communities(request):
3636
if request.method == 'POST':
@@ -133,14 +133,19 @@ def community_article_create(request):
133133
if status=='1':
134134
article = create_article(request)
135135
CommunityArticles.objects.create(article=article, user = request.user , community =community )
136+
137+
#create the ether id for artcile blonging to this community
138+
padid = create_article_ether_community(cid, article)
139+
136140
# return community_article_create_body(request, article, community)
137141
data={
138142
'article_id':article.id,
139143
'community_or_group_id':community.pk,
140144
'user_id':request.user.id,
141145
'username':request.user.username,
142146
'url':settings.SERVERURL,
143-
'articleof':'community'
147+
'articleof':'community',
148+
'padid':padid
144149
}
145150
return JsonResponse(data)
146151
# return redirect('article_edit', article.pk)
@@ -166,7 +171,11 @@ def community_article_create(request):
166171
data={}
167172
return JsonResponse(data)
168173
else:
169-
return render(request, 'new_article.html', {'community':community, 'status':1})
174+
#create the session for this article in ether pad
175+
sid = create_session_community(request, cid)
176+
response = render(request, 'new_article.html', {'community':community, 'status':1})
177+
response.set_cookie('sessionID', sid)
178+
return response
170179
else:
171180
return redirect('home')
172181
else:
@@ -255,6 +264,9 @@ def handle_community_creation_requests(request):
255264

256265
)
257266

267+
#create the ether id for community
268+
create_community_ether(communitycreation)
269+
258270
create_wiki_for_community(communitycreation)
259271
communityadmin = Roles.objects.get(name='community_admin')
260272
communitymembership = CommunityMembership.objects.create(
@@ -433,6 +445,9 @@ def create_community(request):
433445
remove_or_add_user_feed(usr,community,'community_created')
434446
notify_remove_or_add_user(request.user, usr,community,'community_created')
435447

448+
#create the ether id for community
449+
create_community_ether(community)
450+
436451
create_wiki_for_community(community)
437452

438453
return redirect('community_view', community.pk)

Group/views.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from django.conf import settings
1919
import json
2020
import requests
21+
from etherpad.views import create_group_ether, create_article_ether_group, create_session_group
2122

2223
def create_group(request):
2324
if request.method == 'POST':
@@ -37,7 +38,11 @@ def create_group(request):
3738
created_by = user
3839
)
3940
role = Roles.objects.get(name='group_admin')
40-
obj = GroupMembership.objects.create(user=user, group=group, role=role)
41+
GroupMembership.objects.create(user=user, group=group, role=role)
42+
43+
#create ether id for the group
44+
create_group_ether(group)
45+
4146
notify_remove_or_add_user(request.user, user, group, 'group_created')
4247
remove_or_add_user_feed(request.user, group, "group_created")
4348
return group
@@ -133,14 +138,19 @@ def group_article_create(request):
133138
if status=='1':
134139
article = create_article(request)
135140
GroupArticles.objects.create(article=article, user = request.user , group =group )
141+
142+
#create ether id for the article belonging to the group
143+
padid = create_article_ether_group(gid, article)
144+
136145
# return community_article_create_body(request, article, community)
137146
data={
138147
'article_id':article.id,
139148
'community_or_group_id':group.pk,#see this thing
140149
'user_id':request.user.id,
141150
'username':request.user.username,
142151
'url':settings.SERVERURL,
143-
'articleof':'group'
152+
'articleof':'group',
153+
'padid':padid
144154
}
145155
return JsonResponse(data)
146156
# return redirect('article_edit', article.pk)
@@ -166,7 +176,11 @@ def group_article_create(request):
166176
data={}
167177
return JsonResponse(data)
168178
else:
169-
return render(request, 'new_article.html', {'group':group, 'status':1})
179+
#create session for this group article in ether pad
180+
sid = create_session_group(request, gid)
181+
response = render(request, 'new_article.html', {'group':group, 'status':1})
182+
response.set_cookie('sessionID', sid)
183+
return response
170184
else:
171185
return redirect('home')
172186
else:

UserRolesPermission/views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from django.core import serializers
2222
from datetime import date
2323
from decouple import config
24+
from etherpad.views import create_ether_user
2425

2526
def signup(request):
2627
"""
@@ -58,6 +59,7 @@ def signup(request):
5859
else:
5960
user = form.save()
6061
assign_role(user, Author)
62+
create_ether_user(user)
6163
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend')
6264
return redirect('user_dashboard')
6365
else:

etherpad/__init__.py

Whitespace-only changes.

etherpad/admin.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from django.contrib import admin
2+
from .models import EtherUser, EtherCommunity, EtherGroup, EtherArticle
3+
# Register your models here.
4+
5+
admin.site.register(EtherUser)
6+
admin.site.register(EtherCommunity)
7+
admin.site.register(EtherGroup)
8+
admin.site.register(EtherArticle)

etherpad/apps.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from django.apps import AppConfig
2+
3+
4+
class EtherpadConfig(AppConfig):
5+
name = 'etherpad'
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# -*- coding: utf-8 -*-
2+
# Generated by Django 1.11.7 on 2018-09-06 13:43
3+
from __future__ import unicode_literals
4+
5+
from django.conf import settings
6+
from django.db import migrations, models
7+
import django.db.models.deletion
8+
9+
10+
class Migration(migrations.Migration):
11+
12+
initial = True
13+
14+
dependencies = [
15+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
16+
('BasicArticle', '0020_merge_20180627_1228'),
17+
('Group', '0013_groupinvitations'),
18+
('Community', '0024_auto_20180614_0125'),
19+
]
20+
21+
operations = [
22+
migrations.CreateModel(
23+
name='EtherArticle',
24+
fields=[
25+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
26+
('article_ether_id', models.TextField()),
27+
('article', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ether_article', to='BasicArticle.Articles')),
28+
],
29+
),
30+
migrations.CreateModel(
31+
name='EtherCommunity',
32+
fields=[
33+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
34+
('community_ether_id', models.TextField()),
35+
('community', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ether_community', to='Community.Community')),
36+
],
37+
),
38+
migrations.CreateModel(
39+
name='EtherGroup',
40+
fields=[
41+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
42+
('group_ether_id', models.TextField()),
43+
('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ether_group', to='Group.Group')),
44+
],
45+
),
46+
migrations.CreateModel(
47+
name='EtherUser',
48+
fields=[
49+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
50+
('user_ether_id', models.TextField()),
51+
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ether_user', to=settings.AUTH_USER_MODEL)),
52+
],
53+
),
54+
]

0 commit comments

Comments
 (0)