stats
This commit is contained in:
44
stats/views.py
Normal file
44
stats/views.py
Normal file
@@ -0,0 +1,44 @@
|
||||
import croniter
|
||||
import validators
|
||||
|
||||
from BaseLib.BaseView import BaseView
|
||||
from stats.models import Snapshot
|
||||
|
||||
|
||||
class StatsView(BaseView):
|
||||
endpoint = ''
|
||||
view_file = 'stats.html'
|
||||
required_login = True
|
||||
|
||||
def get(self):
|
||||
count = 20
|
||||
snapshots = list(Snapshot.objects.filter(project=self.request.user.selected_project).order_by('-created_at')[:count])
|
||||
keys = set()
|
||||
for snapshot in snapshots:
|
||||
for key in snapshot.data:
|
||||
keys.add(key)
|
||||
keys = list(keys)
|
||||
rows = [[] for _ in keys]
|
||||
for snapshot in snapshots:
|
||||
for index, key in enumerate(keys):
|
||||
rows[index].append(snapshot.data.get(key))
|
||||
self.context['keys'] = keys
|
||||
self.context['data'] = rows
|
||||
self.context['err'] = 'err' in self.request.GET
|
||||
|
||||
def post(self):
|
||||
self.request.user.selected_project.stats_enabled = 'enabled' in self.request.POST
|
||||
if self.request.POST['link'] == "":
|
||||
self.request.user.selected_project.stats_link = None
|
||||
elif validators.url(self.request.POST['link']):
|
||||
self.request.user.selected_project.stats_link = self.request.POST['link']
|
||||
else:
|
||||
return '/stats?err=true'
|
||||
if self.request.POST['cron'] == "":
|
||||
self.request.user.selected_project.stats_cron = None
|
||||
elif croniter.croniter.is_valid(self.request.POST['cron']):
|
||||
self.request.user.selected_project.stats_cron = self.request.POST['cron']
|
||||
else:
|
||||
return '/stats?err=true'
|
||||
self.request.user.selected_project.save()
|
||||
return '/stats'
|
Reference in New Issue
Block a user