authors.py
60 lines
| 1.9 KiB
| text/x-python
|
PythonLexer
neko259
|
r1420 | import os | ||
neko259
|
r1720 | import platform | ||
neko259
|
r1721 | import sys | ||
neko259
|
r1420 | |||
neko259
|
r551 | from django.shortcuts import render | ||
neko259
|
r1693 | from django.utils.decorators import method_decorator | ||
from django.views.decorators.csrf import csrf_protect | ||||
neko259
|
r551 | |||
neko259
|
r1420 | import neboard | ||
neko259
|
r551 | from boards.authors import authors | ||
neko259
|
r1424 | from boards.utils import cached_result | ||
neko259
|
r551 | from boards.views.base import BaseBoardView | ||
neko259
|
r1420 | from boards.models import Post | ||
PARAM_AUTHORS = 'authors' | ||||
PARAM_MEDIA_SIZE = 'media_size' | ||||
PARAM_POST_COUNT = 'post_count' | ||||
neko259
|
r1618 | PARAM_POST_PER_DAY = 'post_per_day' | ||
PARAM_POST_PER_WEEK = 'post_per_week' | ||||
PARAM_POST_PER_MONTH = 'post_per_month' | ||||
neko259
|
r1720 | PARAM_PLATFORM = 'platform' | ||
neko259
|
r1721 | PARAM_PYTHON = 'python' | ||
neko259
|
r1939 | PARAM_HOSTS = 'hosts' | ||
neko259
|
r551 | |||
neko259
|
r561 | |||
neko259
|
r551 | class AuthorsView(BaseBoardView): | ||
neko259
|
r1693 | @method_decorator(csrf_protect) | ||
neko259
|
r551 | def get(self, request): | ||
neko259
|
r918 | params = dict() | ||
neko259
|
r1420 | params[PARAM_AUTHORS] = authors | ||
params[PARAM_MEDIA_SIZE] = self._get_directory_size(neboard.settings.MEDIA_ROOT) | ||||
params[PARAM_POST_COUNT] = Post.objects.count() | ||||
neko259
|
r551 | |||
neko259
|
r1720 | params[PARAM_PLATFORM] = platform.platform() | ||
neko259
|
r1721 | python_version = sys.version_info | ||
params[PARAM_PYTHON] = '{}.{}.{}'.format(python_version.major, | ||||
python_version.minor, python_version.micro) | ||||
neko259
|
r1720 | |||
neko259
|
r1618 | params[PARAM_POST_PER_DAY] = Post.objects.get_post_per_days(1) | ||
params[PARAM_POST_PER_WEEK] = Post.objects.get_post_per_days(7) | ||||
params[PARAM_POST_PER_MONTH] = Post.objects.get_post_per_days(30) | ||||
neko259
|
r1939 | params[PARAM_HOSTS] = self._get_host_list() | ||
neko259
|
r918 | return render(request, 'boards/authors.html', params) | ||
neko259
|
r1420 | |||
neko259
|
r1424 | @cached_result() | ||
neko259
|
r1420 | def _get_directory_size(self, directory): | ||
total_size = 0 | ||||
for dirpath, dirnames, filenames in os.walk(directory): | ||||
for f in filenames: | ||||
fp = os.path.join(dirpath, f) | ||||
total_size += os.path.getsize(fp) | ||||
return total_size | ||||
neko259
|
r1939 | |||
@cached_result() | ||||
def _get_host_list(self): | ||||
return ['<a href="http://{}/">{}</a>'.format(host, host) for host in neboard.settings.ALLOWED_HOSTS if host != '*'] | ||||