Просмотр статистики покрытия кода от 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. как представить столбец для текущего дня месяца (например, день_1, день_2, день_3 и т. д.)
  2. как добавить 1 к итоговой сумме "total_month_views".
  3. Я очень новичок в Python. Вполне возможно, что в моем коде Python есть и другие ошибки, о которых я не знаю.

0 ответов

Другие вопросы по тегам