Allow some features to be disabled.
This commit is contained in:
parent
c40425c6e3
commit
5e9b1aa020
|
@ -5,4 +5,6 @@ def app_details(request):
|
|||
"""Passes settings details to the templates."""
|
||||
return {'APP_NAME': settings.APP_NAME,
|
||||
'APP_VERSION': settings.APP_VERSION,
|
||||
'DISPLAY_NAME': settings.DISPLAY_NAME}
|
||||
'DISPLAY_NAME': settings.DISPLAY_NAME,
|
||||
'PASTE': settings.PASTE,
|
||||
}
|
||||
|
|
|
@ -36,13 +36,14 @@ class Paste(models.Model):
|
|||
language = models.ForeignKey(Language, default=14, on_delete=models.SET_NULL, null=True)
|
||||
slug = models.SlugField(unique=True, editable=False)
|
||||
title = models.CharField(max_length=200, blank=True)
|
||||
content = models.TextField(validators=[MaxLengthValidator(settings.MAX_CHARACTERS)])
|
||||
content = models.TextField(validators=[MaxLengthValidator(
|
||||
settings.PASTE['max_characters'])])
|
||||
size = models.IntegerField(default=0, editable=False)
|
||||
paste_time = models.DateTimeField(default=datetime.now, editable=False)
|
||||
paste_ip = models.GenericIPAddressField(editable=False)
|
||||
paste_agent = models.CharField(max_length=200, editable=False)
|
||||
lifetime = models.IntegerField(default=0, choices=EXPIRE_CHOICES)
|
||||
lifecount = models.IntegerField(default=0)
|
||||
lifecount = models.IntegerField(default=0, blank=True)
|
||||
viewcount = models.IntegerField(default=0, editable=False)
|
||||
expired = models.BooleanField(default=False, editable=False)
|
||||
private = models.BooleanField(default=False)
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<form method="post" action="{% url 'index' %}">
|
||||
{{ form.non_field_errors }}
|
||||
<div class="row">
|
||||
{% if PASTE.has_title %}
|
||||
<div class="span6">
|
||||
<label for="id_title">{% trans 'Title' %}</label>
|
||||
<div class="input-prepend">
|
||||
|
@ -15,6 +16,7 @@
|
|||
</div>
|
||||
{{ form.title.errors }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="span3">
|
||||
<label for="id_language">{% trans 'Language' %}</label>
|
||||
<div class="input-prepend">
|
||||
|
@ -31,7 +33,9 @@
|
|||
</div>
|
||||
<div class="row">
|
||||
<div class="span12">
|
||||
{% if PASTE.show_char_left %}
|
||||
<span id="charsleft"><b id="charsleft_counter">...</b> {% trans 'characters left' %}</span>
|
||||
{% endif %}
|
||||
<label for="id_content">{% trans 'Content' %}</label>
|
||||
{{ form.content }}
|
||||
{{ form.content.errors }}
|
||||
|
@ -46,6 +50,7 @@
|
|||
</div>
|
||||
{{ form.lifetime.errors }}
|
||||
</div>
|
||||
{% if PASTE.has_expire_by_views %}
|
||||
<div class="span3">
|
||||
<label for="id_lifecount">{% trans 'Expire allowed views' %}</label>
|
||||
<div class="input-prepend">
|
||||
|
@ -54,6 +59,7 @@
|
|||
</div>
|
||||
{{ form.lifecount.errors }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="span6">
|
||||
<label for="id_password">{% trans 'Password protected' %}</label>
|
||||
<div class="input-prepend">
|
||||
|
@ -69,5 +75,7 @@
|
|||
</form>
|
||||
{% endblock %}
|
||||
{% block javascript %}
|
||||
{% if PASTE.show_char_left %}
|
||||
<script type="text/javascript" src="/static/js/paste.js"></script>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{% load i18n %}
|
||||
{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
|
||||
<!--<table class="table table-striped table-bordered">
|
||||
{% if PASTE.has_meta_table %}
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{% trans 'Language' %}</th>
|
||||
|
@ -24,7 +25,14 @@
|
|||
<td>{% if paste.expiration_time %}{{ paste.expiration_time }}{% else %}{% trans 'None' %}{% endif %}</td>
|
||||
</tr>
|
||||
</table>
|
||||
-->
|
||||
{% endif %}
|
||||
<div class="row">
|
||||
<div class="span9">
|
||||
{% if PASTE.has_title %}
|
||||
<h1>{{ paste.title|truncatechars:50 }}</h1>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="span3">
|
||||
<ul class="nav nav-pills pull-right">
|
||||
{% for renderer in renderers %}
|
||||
<li class="{% if renderer == current_renderer %}active{% endif %}">
|
||||
|
@ -32,5 +40,5 @@
|
|||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<h1>{{ paste.title|truncatechars:50 }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -11,7 +11,7 @@ from webtools import settings
|
|||
def index(request):
|
||||
"""Displays form."""
|
||||
data = {'menu': 'index',
|
||||
'max_characters': settings.MAX_CHARACTERS}
|
||||
'max_characters': settings.PASTE['max_characters']}
|
||||
if request.method == 'POST':
|
||||
paste = Paste(slug=random_id(Paste),
|
||||
paste_ip=request.META['REMOTE_ADDR'],
|
||||
|
@ -22,7 +22,8 @@ def index(request):
|
|||
return render(request, 'paste/index.html', data)
|
||||
form.save() # Some logic added to overrided method, see forms.py
|
||||
return redirect(reverse('paste', kwargs={'slug': paste.slug}))
|
||||
data['form'] = PasteForm()
|
||||
data['form'] = PasteForm(initial={
|
||||
'private': settings.PASTE['private_by_default']})
|
||||
return render(request, 'paste/index.html', data)
|
||||
|
||||
|
||||
|
@ -47,10 +48,10 @@ def show(request, slug, renderer='pygments'):
|
|||
# Before rendering actions
|
||||
paste.incr_viewcount()
|
||||
# Handling rendering modes
|
||||
if not renderer or renderer not in settings.ENABLED_RENDERERS:
|
||||
renderer = settings.DEFAULT_RENDERER
|
||||
if not renderer or renderer not in settings.PASTE['enabled_renderers']:
|
||||
renderer = settings.PASTE['default_renderer']
|
||||
data['current_renderer'] = renderer
|
||||
data['renderers'] = settings.ENABLED_RENDERERS
|
||||
data['renderers'] = settings.PASTE['enabled_renderers']
|
||||
render_method = getattr(renderers, 'render_%s' % renderer)
|
||||
rendered_template = render_method(request, paste, data)
|
||||
|
||||
|
@ -64,5 +65,5 @@ def show(request, slug, renderer='pygments'):
|
|||
def history(request):
|
||||
"""Display last 25 public non-expired pastes."""
|
||||
pastes = Paste.objects.filter(private=False, expired=False).order_by('-pk')[:25]
|
||||
data = {'pastes': pastes, 'menu': 'history', 'default_renderer': settings.DEFAULT_RENDERER}
|
||||
data = {'pastes': pastes, 'menu': 'history', 'default_renderer': settings.PASTE['default_renderer']}
|
||||
return render(request, 'paste/history.html', data)
|
||||
|
|
|
@ -9,9 +9,6 @@ SITE_ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
|||
### Customize/configure Pasteque
|
||||
|
||||
DISPLAY_NAME = 'Pasteque'
|
||||
ENABLED_RENDERERS = ('pygments', 'form', 'raw') # Ensure show-***.html exists
|
||||
DEFAULT_RENDERER = 'pygments'
|
||||
MAX_CHARACTERS = 100000
|
||||
COMPRESS_ENABLED = False
|
||||
SECRET_KEY = 'change_me'
|
||||
ALLOWED_HOSTS = ['localhost','127.0.0.1']
|
||||
|
@ -89,6 +86,18 @@ INSTALLED_APPS = (
|
|||
'compressor',
|
||||
'paste',
|
||||
)
|
||||
|
||||
PASTE = {
|
||||
'has_title': False,
|
||||
'has_expire_by_views': False,
|
||||
'has_meta_table': False,
|
||||
'show_char_left': False,
|
||||
'private_by_default': True,
|
||||
'enabled_renderers': ['pygments', 'raw'],
|
||||
'default_renderer': 'pygments',
|
||||
'max_characters': 100000,
|
||||
}
|
||||
|
||||
LOGGING = {
|
||||
'version': 1,
|
||||
'disable_existing_loggers': False,
|
||||
|
|
Loading…
Reference in New Issue
Block a user