1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
from datetime import datetime as dt
import re
import os
from django.contrib.auth.decorators import user_passes_test
from django.shortcuts import HttpResponseRedirect, render
from .forms import PageForm
from .models import Page, SocialMediaButton
# Create your views here.
def is_admin(user):
return user.is_staff or user.is_superuser
def check_body_for_execute(text):
matches = re.findall(r'@execute (.*?) @execute', text, re.I|re.DOTALL)
for m in matches:
text = text.replace('@execute %s @execute' % (m,),
'%s' % (os.popen(m).read()))
return text
def gen_navbar(extras=[]):
# this function generates the navbar at the top of the page
pages = Page.objects.all().exclude(name='').exclude(name='blog')
nav_objects = ['home', 'blog']
for p in pages:
nav_objects.append('%s' % (p.name,))
nav_objects = nav_objects + extras
return nav_objects
def index(request):
navbar = gen_navbar()
page_content = Page.objects.get(name='')
social_media = SocialMediaButton.objects.all()
if page_content.header_image[0] == '&':
page_content.header_image = page_content.header_image[1:]
else:
page_content.header_image = "url('%s');" % (page_content.header_image,)
page_content.body = check_body_for_execute(page_content.body)
return render(request, 'page.html', locals())
@user_passes_test(is_admin)
def edit_index(request):
navbar = gen_navbar()
page_edit = PageForm(request.POST or None, instance=Page.objects.get(name=''))
social_media = SocialMediaButton.objects.all()
if page_edit.is_valid():
print("IM HERE")
edited_page = page_edit.save(commit=False)
edited_page.edited = dt.now()
edited_page.save()
return HttpResponseRedirect('/')
return render(request, 'edit.html', locals())
def page(request, path):
navbar = gen_navbar()
page_content = Page.objects.get(name=path)
social_media = SocialMediaButton.objects.all()
if page_content.header_image[0] == '&':
page_content.header_image = page_content.header_image[1:]
else:
page_content.header_image = "url('%s');" % (page_content.header_image,)
return render(request, 'page.html', locals())
@user_passes_test(is_admin)
def edit(request, path):
navbar = gen_navbar()
page_edit = PageForm(request.POST or None, instance=Page.objects.get(name=path))
social_media = SocialMediaButton.objects.all()
if page_edit.is_valid():
edited_page = page_edit.save(commit=False)
edited_page.edited = dt.now()
edited_page.save()
return HttpResponseRedirect('/%s/' % (edited_page.name,))
return render(request, 'edit.html', locals())
@user_passes_test(is_admin)
def add(request):
navbar = gen_navbar()
page_edit = PageForm(request.POST or None)
if page_edit.is_valid():
added_page = page_edit.save(commit=False)
added_page.edited = dt.now()
added_page.save()
return HttpResponseRedirect('/%s/' % (added_page.name,))
return render(request, 'edit.html', locals())
def home(request):
return HttpResponseRedirect('/')
|