Saravanan666/pypi-org huggingface dataset:
Package: garmin-ace
Garmin Aviation Checklist Editor (ACE) - Python ModuleConvert ACE files to/from various formats (HTML, orgmode). Parse and write ACE files from Python.Installation$ pip install garmin_aceUsageDisplay the available formats:$ ace-convert
Convert source file to destination file
Usage: ace-convert <source> <dest>
Supported source formats are: .org, .ace
Supported destination formats are: .ace, .htmlExample: Converting an ACE file to HTML and PDF$ ace-convert checklist.ace checklist.htmlYou can further convert the HTML document to a PDF file withhttps://wkhtmltopdf.org/downloads.html$ wkhtmltopdf checklist.html checklist.pdfExample: Converting orgmode checklists to the ACE formatOrg mode is a plaintext format, which can be easier to edit and manipulate than the Garmin Checklist Editor app. It expects a simple structure:* Pre-flight checklist
** Master: on
** Lights: on
** Master: off
* Startup checklist
** Master: on
...The top level bullet points are the checklist names, and subitems are the checklist items.To convert it to the other available formats:$ ace-convert checklist.org checklist.aceor$ ace-convert checklist.org checklist.htmlSeehttps://orgmode.org/worg/org-syntax.htmlfor details on the format.Decoding a ACE file to Python objectsfrom garmin_ace import ACEFileDecoder

checklists_obj = ACEFileDecoder.read_from_file('checklist.ace')Seemodels.pyfor the data structure.Encoding a ACE file from Python objectsfrom garmin_ace import ACEFileEncoder

ACEFileEncoder(checklists_obj).write_to_file('checklist2.ace')Running tests (source)$ make test
$ make coverageCreditsOriginally based on the Swift implementationhttps://github.com/RISCfuture/GarminACELicenseCopyright (C) 2023  Xavier AntoviaqueThis program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.
Package: garmin-daily
Fill Google Sheets with data from Garmin ConnectUser manualgarmin-dailyDevelopersCodebase structureAuto-generated reference.Usage exampledaily=GarminDaily()daily.login()day=daily[datetime.date(2023,4,15)]print(day.total_steps)Create / activate environment. ./activate.shIt will also install the package inedit mode.Setting Up Pre-commit for Formatting and Static ChecksInstall Pre-commit:pipinstallpre-commitConfigure Pre-commit:pre-commitinstallThis sets uppre-commitin your local environment to run the same static checks as thestaticGitHub Action.Scriptsmake helpCredentialsuser manualCoverage reportCodecovCoveralls
Package: garmin-ical-export
Garmin iCAL ExportGarmin Connect only allows you to publish calendar with planned workouts for upcoming 30 days (source).
There is no way how to export/publish your passed activities. This package provides a CLI tool that fills the gap.The package will export your activities toiCalendarfile that can be imported into any calendar client.To keep your calendar always synced with Garmin Connect you will have to:schedule a periodical job to run the CLI toolpublish iCalendar file to an URLcreate new calencdar in your client connected to the URLInstallationpip3installgarmin-ical-exportUsageusage: garmin-ical-export [-h]
                          [--activity_type {running,cycling,swimming,multi_sport,fitness_equipment,hiking,walking,winter_sports,other,all}]
                          [--limit LIMIT]
                          [--measurement_system {metric,imperial}]
                          [--target_file TARGET_FILE]
                          login_email password

Exports Garmin Connect activities to iCalendar file.

positional arguments:
  login_email           your Garmin Connect login e-mail
  password              your Garmin Connect login password

optional arguments:
  -h, --help            show this help message and exit
  --activity_type {running,cycling,swimming,multi_sport,fitness_equipment,hiking,walking,winter_sports,other,all}
                        export only specific type of activity
  --limit LIMIT         max. number of activities to export
  --measurement_system {metric,imperial}
                        which system to use to calculate activity properties
  --target_file TARGET_FILE
                        target .ics file (prints to stdout if not passed)ExamplesExport all activities, print the result.garmin-ical-export<GARMIN_CONNECT_EMAIL><GARMIN_CONNECT_PASSWORD>Export onlyrunningactivities, save the result togarmin_activities.icsfile inside home folder.garmin-ical-export<GARMIN_CONNECT_EMAIL><GARMIN_CONNECT_PASSWORD>--activity_typerunning--target_file~/garmin_activities.ics
Package: garm-rate-limiter
Garm Rate LimiterIP address based rate limiter for FlaskDevelopment of Garm Rate Limiter happens onGithub.You can read the full documentationonline. [IN PROGRESS]NB: Route specific rate limiting has not been implemented yet. The specified rate limiting will apply individually to every flask route.InstallationTo install the latest released version of Garm Rate Limiter, run this command in your terminal:pip install garm_rate_limiterThis is the preferred method to install Garm Rate Limiter, as it will always install the most recent stable release.If you don't havepipinstalled, thePython installation guide, respectively thePython Packaging User Guidecan guide you through the process.To install the latest development version of Garm Rate Limiter fromGithub.pip install git+https://github.com/burakozdemir32/garm_rate_limiter.git@main#egg=garm_rate_limiterUsageTo use Garm Rate Limiter in a Flask project:fromdatetimeimporttimedeltafromflaskimportFlaskfromgarm_rate_limiter.configimportRateLimiterConfigfromgarm_rate_limiter.limiterimportRateLimiterMiddlewareapp=Flask(__name__)rate_limiter_config=RateLimiterConfig(limit=10,time=timedelta(seconds=60))app.wsgi_app=RateLimiterMiddleware(config=rate_limiter_config,app=app.wsgi_app)History0.1.3 (2021-02-14)Garm Rate Limiter 0.1.3
Package: garnets
Introductiongarnetsis a very simple wrapper over thegarnettpackage. In version
0.7, the API of garnett changed to rename some frame attributes
(positions, orientations, velocities) to their singular
form.Usagegarnetsis mostly designed to be a drop-in replacement for the
garnett import at the top of your file:import garnets as garnettCaveatsAt the moment, only a basic compatibility layer is supported. Writing
trajectories using frame objects that fulfill only the old frame API
will not work, but writing frames that are read from agarnetsorgarnetttrajectory should work.
Package: garnett
garnettAboutThis is a collection of samples, parsers and writers for formats used in the Glotzer Group at the University of Michigan, Ann Arbor.MaintainersLuis Y. Rivera-Rivera,lyrivera@umich.eduKelly Wang,kelwang@umich.eduCarl Simon Adorf,csadorf@umich.eduBradley Dice,bdice@umich.eduSetupTo install this package with pip, execute:pipinstallgarnett--userDocumentationThe package's documentation is available at:https://garnett.readthedocs.io/To build the documentation yourself using sphinx, execute within the repository:cddoc
makehtml
open_build/html/index.htmlQuickstartReading and writingimportgarnett# Autodetects file format for a uniform trajectory APIwithgarnett.read('gsdfile.gsd')astraj:forframeintraj:pos=frame.position# Simple conversion of trajectory formatswithgarnett.read('posfile.pos')astraj:garnett.write(traj,'gsdfile.gsd')Data accessAccess individual frames by indexing or create subsets of trajectories with slicing:first_frame=traj[0]last_frame=traj[-1]nth_frame=traj[n]# and so onsub_trajectory=traj[i:j]Access properties of trajectories:traj.load_arrays()traj.box# Mtraj.N# Mtraj.types# MxTtraj.type_shapes# MxTtraj.typeid# MxNtraj.position# MxNx3traj.orientation# MxNx4traj.velocity# MxNx3traj.mass# MxNtraj.charge# MxNtraj.diameter# MxNtraj.moment_inertia# MxNx3traj.angmom# MxNx4traj.image# MxNx3# M is the number of frames# T is the number of particle types in a frame# N is the number of particles in a frameAccess properties of individual frames:frame=traj[i]frame.box# garnett.trajectory.Box objectframe.N# scalar, number of particlesframe.types# T, string names for each typeframe.type_shapes# T, list of shapes for each typeframe.typeid# N, type indices of each particleframe.position# Nx3frame.orientation# Nx4frame.velocity# Nx3frame.mass# Nframe.charge# Nframe.diameter# Nframe.moment_inertia# Nx3frame.angmom# Nx4frame.image# Nx3frame.data# Dictionary of lists for each attributeframe.data_key# List of stringsAll matrices are NumPy arrays.Example use with HOOMD-blueSee theexamples directoryfor additional examples.pos_reader=PosFileReader()withopen('cube.pos')asposfile:traj=pos_reader.read(posfile)# Initialize from last framesnapshot=traj[-1].to_hoomd_snapshot()system=init.read_snapshot(snapshot)# Restore last framesnapshot=system.take_snapshot()traj[-1].to_hoomd_snapshot(snapshot)TestingTo run all garnett tests,ddt, HOOMD-blue (hoomd), andpycifrwmust be installed in the testing environments.Execute the tests with:python-munittestdiscovertests
Package: garpix-admin-lock
Garpix Admin lockGarpix Admin lock allows you to lock a page in the admin panelQuickstartInstall with pip:pipinstallgarpix_admin_lockAdd thegarpix_admin_lockand dependency packages to yourINSTALLED_APPS:# settings.pyINSTALLED_APPS=[# ...'garpix_admin_lock',# ...]Package not included migrations, set path to migration directory. Don't forget create this directory (app/migrations/garpix_admin_lock/) and place empty__init__.py:app/migrations/
app/migrations/__init__.py  # empty file
app/migrations/garpix_admin_lock/__init__.py  # empty fileAdd path to settings:# settings.pyMIGRATION_MODULES={'garpix_admin_lock':'app.migrations.garpix_admin_lock',}Add url tourls.py# url.pyfromdjango.contribimportadminfromdjango.urlsimportpath,includeurlpatterns=[path('admin/',admin.site.urls),path('page_lock/',include('garpix_admin_lock.urls')),]Run make migrations:pythonmanage.pymakemigrationsMigrate:pythonmanage.pymigrateExampleAddPageLockViewMixinin models# example/models.pyfromdjango.dbimportmodelsfromadmin_page_lock.mixinsimportPageLockViewMixinclassExampleLock(PageLockViewMixin,models.Model):...AddPageLockAdminMixinin admin# example/admin.pyfromadmin_page_lock.mixinsimportPageLockAdminMixinfromdjango.contribimportadminfrom.modelsimportExample@admin.register(ExampleLock)classExampleAdmin(PageLockAdminMixin,admin.ModelAdmin):lock_change_view=Truelock_changelist_view=False...Basisdjango-admin-page-lock
Package: garpix-blog
Garpix BlogБыстрый стартУстановка:pipinstallgarpix_blogДобавьтеgarpix_vacancyвINSTALLED_APPS:# settings.pyINSTALLED_APPS=[# ...'garpix_blog',]MIGRATION_MODULES.update({'garpix_blog':'app.migrations.garpix_blog'})ChangelogСмотриCHANGELOG.md.ContributingСмотриCONTRIBUTING.md.LicenseMITDeveloped by Garpix /https://garpix.com
Package: garpix-cart
Garpix CartQuickstartInstall with pip$ pip install garpix_cartAdd thegarpix_cartto your INSTALLED_APPS:# settings.pyINSTALLED_APPS=[# ...'garpix_cart',]and to migration modules:# settings.py# ...MIGRATION_MODULES={'garpix_cart':'app.migrations.garpix_cart',}Make migrations and migrate database:$ ./manage.py makemigrations
$ ./manage.py migrateAdd tourls.py:urlpatterns = [
    # ...
    # garpix_cart
    path('', include(('garpix_cart.urls', 'cart'), namespace='garpix_cart')),
]В интернет магазине обычно посетитель начинает искать интересные товары, надеясь добавить несколько из них в свою корзину.
Затем по пути к оформлению заказа они решают, создать ли учетную запись пользователя, использовать существующую или продолжить работу в качестве гостя.
Здесь все усложняется.Во-первых, для неаутентифицированных посетителей сайта корзина никому не принадлежит. Но каждая корзина должна быть
связана с ее текущим посетителем сайта.Во-вторых, когда корзина преобразована в заказ, но посетитель хочет продолжить работу в качестве гостя, этот объект заказа
должен ссылаться на объект пользователя в базе данных.
Такие пользователи будут рассматриваться как фальшивые: не могут войти в систему, сбросить пароль и т.д.
Единственная информация, которую необходимо сохранить для такого фальшивого пользователя это их адрес электронной почты,
иначе они не смогут быть проинформированы, когда бы ни состояние их порядок меняется.Django явно не разрешает использование таких пользовательских объектов в своих моделях баз данных.
Но, используя логический флаг is_active, мы можем обмануть приложение, чтобы оно интерпретировало такого гостя как
фальшивого анонимного пользователя.Такой подход неприменим для всех приложений на основе Django, добавляется новая модель -Customersetting.pyGARPIX_CART_SERIALIZER_MIXIN- можно задать миксин для сериалайзера элемента корзиныGARPIX_CART_MIXIN- можно задать миксин для модели элемента корзиныChangelogSeeCHANGELOG.md.ContributingSeeCONTRIBUTING.md.LicenseMITDeveloped by Garpix /https://garpix.com
Package: garpix-cloudpayments
Garpix CloudPaymentsПрием платажей с CloudPayments.Быстрый стартУстановите через pipenv:pipenvinstallgarpix_cloudpaymentsДобавьтеgarpix_cloudpaymentsвINSTALLED_APPSи укажите адрес для миграций:# settings.pyINSTALLED_APPS+=['garpix_cloudpayments',]MIGRATION_MODULES={# ...}MIGRATION_MODULES['garpix_cloudpayments']='app.migrations.garpix_cloudpayments'Создайте директории и файлы:backend/app/migrations/garpix_cloudpayments/
backend/app/migrations/garpix_cloudpayments/__init__.pyСделайте миграции и мигрируйте:python3backend/manage.pymakemigrations
python3backend/manage.pymigrateДобавьте пути вurls.py:fromdjango.urlsimportpath,includeurlpatterns=[path('cloudpayments/',include('garpix_cloudpayments.urls')),# ...]Также, добавьте в личном кабинете CloudPayments ссылки на эти коллбеки:Pay уведомление=>https://example.com/cloudpayments/pay/Fail уведомление=>https://example.com/cloudpayments/fail/После этого необходимо зайти в административную панель и добавить публичный ключ из личного кабинета CloudPayments.При изменении статуса платежа, дергается функция, указанная вapp/settings.py(вы можете поменять на свою функцию и указать путь до нее):# app/settings.py

GARPIX_PAYMENT_STATUS_CHANGED_CALLBACK = 'garpix_payment.callbacks.empty_callback'Пример функции:fromgarpix_cloudpayments.models.choicesimportPAYMENT_STATUS_COMPLETED,PAYMENT_STATUS_CANCELLED,PAYMENT_STATUS_DECLINEDdefmy_callback(payment):ifpayment.status==PAYMENT_STATUS_COMPLETED:print('Меняем статус заказа на успешный')elifpayment.statusin(PAYMENT_STATUS_CANCELLED,PAYMENT_STATUS_DECLINED):print('Заказ провален')else:print('Можем тоже использовать')Ниже пример работы на фронтенде (до вызова точки/cloudpayments/payment_data/необходимо создать объект моделиPayment):<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><title>Garpix CloudPayments</title><scriptsrc="https://widget.cloudpayments.ru/bundles/cloudpayments"></script><scriptsrc="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script></head><body><label>Номер заказа (payment_uuid):<inputtype="text"value="1"name="payment_uuid"class="jsPaymentUUID"></label><buttononclick="getDataAndPay(); return false;">Оплатить</button><script>functiongetDataAndPay(){varpaymentUUID=document.querySelector('.jsPaymentUUID').value;axios.get('/cloudpayments/payment_data/?payment_uuid='+paymentUUID).then(function(paymentData){console.log(paymentData);pay(paymentData);})}functionpay(paymentData){varwidget=newcp.CloudPayments();widget.pay('auth',// или 'charge'paymentData,{onSuccess:function(options){// success//действие при успешной оплатеalert('success');},onFail:function(reason,options){// fail//действие при неуспешной оплатеalert('fail');},onComplete:function(paymentResult,options){//Вызывается как только виджет получает от api.cloudpayments ответ с результатом транзакции.//например вызов вашей аналитики Facebook Pixelalert('complete')}})};</script></body></html>ChangelogSeeCHANGELOG.md.ContributingSeeCONTRIBUTING.md.LicenseMITDeveloped by Garpix /https://garpix.com
Package: garpixcms
GarpixCMSStart new project with GarpixCMS.. code-block:: bashpip install cookiecuttercookiecutterhttps://github.com/garpixcms/garpixcms-empty-templateEnter name for your website...cd websiteSee README.md of projectcat README.mdGarpix userStarting from version 4.0.0 of cmsgarpix_authis deprecated and replaces bygarpix_user.
If you usedgarpix_authin your project with an older cms version, follow the steps below to update correctly.Install new version of modulepip install garpixcms==4.0.0.Following the instructions for installinggarpix_user(https://github.com/garpixcms/garpix_user#quickstart) set up the project (note that routes and basic settings are already included in the garpixcms module ingarpixcms/settings.pyandgarpixcms/urls.pyrespectively).After applying the migrations run commandpython3 manage.py update_user_module.Set .env variableENABLE_GARPIX_AUTHto False or just delete it.ChangelogSeeCHANGELOG.md <CHANGELOG.md>_.ContributingSeeCONTRIBUTING.md <CONTRIBUTING.md>_.LicenseMIT <LICENSE>_
Package: garpix-company
Garpix CompanyCompany module for Django/DRF projects.QuickstartInstall with pip:pipinstallgarpix_companyAdd thegarpix_companyto yourINSTALLED_APPS:# settings.py# ...INSTALLED_APPS=[# ...'garpix_company',]and to migration modules:# settings.py# ...MIGRATION_MODULES={'garpix_company':'app.migrations.garpix_company',}Add tourls.py:# ...urlpatterns=[# ...# garpix_companypath('',include(('garpix_company.urls','garpix_company'),namespace='garpix_company')),]Add Company model to your project using abstractAbstractCompanyfrom the model:fromgarpix_company.modelsimportAbstractCompanyclassCompany(AbstractCompany):passAdd UserCompanyRole model to your project using abstractAbstractUserCompanyRolefrom the model:fromgarpix_company.modelsimportAbstractUserCompanyRoleclassUserCompanyRole(AbstractUserCompanyRole):passAddGARPIX_COMPANY_MODEL,GARPIX_USER_COMPANY_MODELandGARPIX_COMPANY_ROLE_MODELtosettings.py:# settings.pyGARPIX_COMPANY_MODEL='app.Company'GARPIX_COMPANY_ROLE_MODEL='app.UserCompanyRole'GARPIX_USER_COMPANY_MODEL='garpix_company.UserCompany'UseCompanyAdminas base in your admin panel:fromdjango.contribimportadminfromapp.modelsimportCompanyfromgarpix_company.adminimportCompanyAdmin@admin.register(Company)classCompanyAdmin(CompanyAdmin):passInvite and create userYou can add fields tocompany_invite/create_and_inviteendpoint.To do it overrideCreateAndInviteToCompanySerializerby adding field and add it tosettings:# settings.pyGARPIX_COMPANY_CREATE_AND_INVITE_SERIALIZER='app.serializers.CustomInviteCompanySerializer'# app.serializers.pyfromrest_frameworkimportserializersfromgarpix_company.serializersimportCreateAndInviteToCompanySerializerclassCustomInviteCompanySerializer(CreateAndInviteToCompanySerializer):username=serializers.CharField(write_only=True)classMeta(CreateAndInviteToCompanySerializer.Meta):fields=CreateAndInviteToCompanySerializer.Meta.fields+('username',)You also can overrideUserSerializerandCompanyRoleSerializerto add custom fields touserandrolefields of/company/{pk}/user/endpoints:# settings.pyGARPIX_COMPANY_USER_SERIALIZER='app.serializers.UserSerializer'GARPIX_COMPANY_ROLE_SERIALIZER='app.serializers.CompanyRoleSerializer'You can also setGARPIX_COMPANY_INVITE_NOT_USERSsetting to True (False is default) to allow to invite not registered usersCompanies count limitIf you need to add some limitations on companies count the user can be a part of, you can overridecheck_user_companies_limitclass method ofCompanyclass:fromgarpix_company.modelsimportAbstractCompany,get_user_company_modelclassCompany(AbstractCompany):@classmethoddefcheck_user_companies_limit(cls,user):UserCompany=get_user_company_model()returnUserCompany.objects.filter(user=user).count()<1Seegarpix_company/tests/test_company.pyfor examples.ChangelogСмотриCHANGELOG.md.ContributingСмотриCONTRIBUTING.md.LicenseMITDeveloped by Garpix /https://garpix.com
Package: garpix-faq
Garpix FAQAuth module for Django/DRF projects. Part of GarpixCMS.Used packages:django rest frameworksocial-auth-app-djangodjango-rest-framework-social-oauth2etc; see setup.pyQuickstartInstall with pip:pipinstallgarpix_faqAdd thegarpix_faqto yourINSTALLED_APPS:# settings.py# ...INSTALLED_APPS=[# ...'garpix_faq',]and to migration modules:# settings.py# ...MIGRATION_MODULES={'garpix_faq':'app.migrations.garpix_faq',}Add tourls.py:# ...urlpatterns=[# ...# garpix_faqpath('',include(('garpix_faq.urls','faq'),namespace='garpix_faq')),]Enjoy!Seegarpix_faq/tests.pyfor examples.ChangelogSeeCHANGELOG.md.ContributingSeeCONTRIBUTING.md.LicenseMITDeveloped by Garpix /https://garpix.com
Package: garpix-favourite
Garpix FavouriteИзбранное для любых моделей. Является частью GarpixCMS.Быстрый стартУстановка через pipenv:pipenvinstallgarpix_favouriteДобавьтеgarpix_favouriteвINSTALLED_APPSи укажите адрес для миграций:# settings.pyfromgarpixcms.settingsimport*# noqaINSTALLED_APPS+=['garpix_favourite',]MIGRATION_MODULES['garpix_favourite']='app.migrations.garpix_favourite'Создайте директории и файлы:backend/app/migrations/garpix_favourite/
backend/app/migrations/garpix_favourite/__init__.pyСделайте миграции и мигрируйте:python3backend/manage.pymakemigrations
python3backend/manage.pymigrateДобавьте вurls.py:# ...urlpatterns=[# ...# garpix_favouritepath('',include(('garpix_favourite.urls','favourite'),namespace='garpix_favourite')),]ChangelogSeeCHANGELOG.md.ContributingSeeCONTRIBUTING.md.LicenseMITDeveloped by Garpix /https://garpix.com
Package: garpix-instagram
Garpix InstagramПакет интеграции с instagram.comБыстрый стартУстановка:pipinstallgarpix_instagramДобавьтеgarpix_instagramвINSTALLED_APPS:# settings.pyINSTALLED_APPS=[# ...'garpix_instagram',]Также, добавьте переменные окружения (файл.env) значениями, полученными от profitbase.ru:INSTAGRAM_USERNAME=???INSTAGRAM_PASSWORD=???Также, в settings.py необходимо добавить миксины:GARPIX_INSTAGRAM_POST_MIXIN='garpix_instagram.models.empty_mixin.EmptyMixin'ИспользованиеДля получения данных от инстаграма используйте следующую manage.py команду:python3 backend/manage.py start_instДополнительноМожет потребоваться командаsudo apt install firefox-geckodriverChangelogСмотриCHANGELOG.md.ContributingСмотриCONTRIBUTING.md.LicenseMITDeveloped by Garpix /https://garpix.com
Package: garpix-jira
Garpix JiraИнтеграция с Jira Server.Быстрый стартУстановите через pipenv:pipenvinstallgarpix_jiraДобавьтеgarpix_jiraвINSTALLED_APPSи укажите адрес для миграций:# settings.pyfromgarpixcms.settingsimport*# noqaINSTALLED_APPS+=['garpix_jira',]MIGRATION_MODULES['garpix_jira']='app.migrations.garpix_jira'Создайте директории и файлы:backend/app/migrations/garpix_jira/backend/app/migrations/garpix_jira/__init__.pyСделайте миграции и мигрируйте:python3backend/manage.pymakemigrationspython3backend/manage.pymigrateПосле этого необходимо создать адрес сервера, с которым будем интегрироваться и ввести учетные данные администратора Jirahttp://localhost:8000/admin/garpix_jira/server/Теперь, можно забрать данные из Jira в ваш проект. Для этого выполните команду (она будет периодически запускать данные):python3backend/manage.pyjira_sync_allGarpix Jira PagesТакже, вы можете выводить статистику на страницы, используя garpixcms (https://github.com/garpixcms/garpixcms).Для этого, сделайте следующее:Установите через pipenv:pipenvinstallgarpix_jira_pagesДобавьтеgarpix_jira_pagesвINSTALLED_APPSи укажите адрес для миграций:# settings.pyfromgarpixcms.settingsimport*# noqaINSTALLED_APPS+=['garpix_jira_pages',]MIGRATION_MODULES['garpix_jira_pages']='app.migrations.garpix_jira_pages'Создайте директории и файлы:backend/app/migrations/garpix_jira_pages/backend/app/migrations/garpix_jira_pages/__init__.pyСделайте миграции и мигрируйте:python3backend/manage.pymakemigrationspython3backend/manage.pymigrateТеперь, вы можете создать в административной панели, в Структуре страниц страницу
“Jira - Затраченное время пользователей (страница)” и увидите на ней таблицу затреканного времени.Чтобы скрыть лишние записи, можно в админ-панели в Пользователях Jira выключить галку “Пользователь трекает время?”.ChangelogSeeCHANGELOG.md.ContributingSeeCONTRIBUTING.md.LicenseMITDeveloped by Garpix /https://garpix.com