Просмотр статистики покрытия кода от PHP до Python
Я переключаю свой веб-сайт с PHP на Django (Python 3.5). Мне нужна помощь в преобразовании следующей функции просмотра статистики в Python.
Структура базы данных выглядит следующим образом:
CREATE TABLE blog_website_view_stats
(
reference bigserial NOT NULL,
blog_website_reference bigint NOT NULL,
language_iso text NOT NULL,
year bigint NOT NULL,
month bigint NOT NULL,
day_1 bigint,
day_2 bigint,
day_3 bigint,
...
total_month_views bigint NOT NULL,
)
Это код PHP
/**
* Entry View Stats
*
* @param $blog_reference
*/
public function EntryViewStats(
$blog_reference
)
{
/**
* @var \Actsministries\Database\Entity\RonsHome\BlogWebsiteViewStats $result
*/
$result = $this->entityManager->getRepository('Actsministries\Database\Entity\RonsHome\BlogWebsiteViewStats')
->findOneBy(
[
'blogWebsiteReference' => $blog_reference,
'languageIso' => 'en-US',
'month' => date('n'),
'year' => date('Y')
]
);
if (!is_object($result)) {
$setday = 'setDay' . date('j');
$this->entityManager->beginTransaction();
// does not exist
$view_stats_update = (new EntityBlogWebsiteViewStats())->setBlogWebsiteReference($blog_reference)
->setLanguageIso('en-US')
->setMonth(date('n'))
->setYear(date('Y'))
->setTotalMonthViews('1')
->$setday(
'1'
);
$this->entityManager->persist($view_stats_update);
$this->entityManager->flush($view_stats_update);
$this->entityManager->commit();
} else {
$this->entityManager->beginTransaction();
$setday = 'setDay' . date('j');
$getday = 'getDay' . date('j');
$result->$setday($result->$getday() + 1);
$result->setTotalMonthViews($result->getTotalMonthViews() + 1);
$this->entityManager->persist($result);
$this->entityManager->flush($result);
$this->entityManager->commit();
}
}
Код Python, который я создал до сих пор:
@transaction.atomic()
def stats(self, context):
"""stats
:param dict context: Context
:return: None|bool
"""
result = BlogWebsiteViewStats.objects.update_or_create(
blog_website_reference=1,
language_iso='en-US',
year=timezone.now().year,
month=timezone.now().month,
('day_' + str(timezone.now().day))=datetime.utcnow() + timedelta(days=1),
total_month_views=1
)
result.save()
Я борюсь с:
- как представить столбец для текущего дня месяца (например, день_1, день_2, день_3 и т. д.)
- как добавить 1 к итоговой сумме "total_month_views".
- Я очень новичок в Python. Вполне возможно, что в моем коде Python есть и другие ошибки, о которых я не знаю.