GithubHelp home page GithubHelp logo

ambient-innovation / ai-django-core Goto Github PK

View Code? Open in Web Editor NEW
25.0 9.0 4.0 363 KB

Deprecated Ambient Toolbox (use ambient-toolbox)

Home Page: https://pypi.org/project/ai-django-core/

License: MIT License

Dockerfile 0.37% Python 98.82% HTML 0.61% PowerShell 0.19%
anonymisation bleach django helpers-library python3 testing

ai-django-core's Introduction

pypi Downloads Documentation Status

Disclaimer: Package was superseded by ambient-toolbox!

This package was renamed, moved and deprecated under the old name. The successor is the "Ambient Toolbox".


Overview

This package contains various useful helper functions. You can read up on all the fancy things at readthedocs.io.

Installation

  • Install the package via pip:

    pip install ai-django-core

    or via pipenv:

    pipenv install ai-django-core

  • Add module to INSTALLED_APPS within the main django settings.py:

    INSTALLED_APPS = (
        ...
        'ai_django_core',
    )
    

Contribute

Setup package for development

  • Create a Python 3.11 virtualenv
  • Activate the virtualenv (take care that you need Scripts/activate.ps1 for Windows users instead of Scripts/activate)
  • Install dependencies with pip install .[dev,docs,view-layer,drf,graphql]

Add functionality

  • Clone the project locally
  • Create a new branch for your feature
  • Change the dependency in your requirements.txt to a local (editable) one that points to your local file system: -e /Users/workspace/ai-django-core or via pip pip install -e /Users/workspace/ai-django-core
  • Ensure the code passes the tests
  • Create a pull request

Run tests

  • Check coverage

    pytest --cov=.
    
  • Run tests

    pytest
    

Git hooks (via pre-commit)

We use pre-push hooks to ensure that only linted code reaches our remote repository and pipelines aren't triggered in vain.

To enable the configured pre-push hooks, you need to install pre-commit and run once:

pre-commit install -t pre-push -t pre-commit --install-hooks

This will permanently install the git hooks for both, frontend and backend, in your local .git/hooks folder. The hooks are configured in the .pre-commit-config.yaml.

You can check whether hooks work as intended using the run command:

pre-commit run [hook-id] [options]

Example: run single hook

pre-commit run ruff --all-files --hook-stage push

Example: run all hooks of pre-push stage

pre-commit run --all-files --hook-stage push

Update documentation

  • To generate new auto-docs for new modules run: sphinx-apidoc -o ./docs/modules/ ./ai_django_core/ (in the current set up an auto doc for the antivirus module is not supported due to installation and import problems. Since it might be removed in the future, that should be fine for now).
  • To build the documentation run: sphinx-build docs/ docs/_build/html/ or go into the docs folder and run: make html. Open docs/_build/html/index.html to see the documentation.

Translation files

If you have added custom text, make sure to wrap it in _() where _ is gettext_lazy (from django.utils.translation import gettext_lazy as _).

How to create translation file:

  • Navigate to ai_django_core/ai_django_core (the inner directory!)
  • python manage.py makemessages -l de
  • Have a look at the new/changed files within ai_django_core/ai_django_core/locale

How to compile translation files:

  • Navigate to ai_django_core/ai_django_core (the inner directory!)
  • python manage.py compilemessages
  • Have a look at the new/changed files within ai_django_core/ai_django_core/locale

Publish to ReadTheDocs.io

  • Fetch the latest changes in GitHub mirror and push them
  • Trigger new build at ReadTheDocs.io (follow instructions in admin panel at RTD) if the GitHub webhook is not yet set up.

Publish to PyPi

  • Update documentation about new/changed functionality

  • Update the Changelog

  • Increment version in main __init__.py

  • Create pull request / merge to master

  • This project uses the flit package to publish to PyPI. Thus publishing should be as easy as running:

    flit publish
    

    To publish to TestPyPI use the following ensure that you have set up your .pypirc as shown here and use the following command:

    flit publish --repository testpypi
    

ai-django-core's People

Contributors

dennisgilliam avatar felixschul avatar gitron avatar mariusburfey avatar mastacheata avatar michael-agel-ambient avatar nb-at-ambient avatar timeyyy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ai-django-core's Issues

CommonInfo and CreatedAtInfo improvements

Description

As of version 5.6.0 of ai-django-core, I believe there is a little room for improvement on these models:

  • It uses default=now on created_at and lastmodified_at fields, instead of the good old auto_now=True and auto_now_add=True, which is cleaner and does not make these fields visible/editable on modelForms by default, which is ideal for audit purposes.
  • The created_by and lastmodified_by fields should have the editable flag set to False so they are fully automatic and not visible on forms by default.

The current settings are not wrong, but I believe the ones I'm proposing suit more the typical use case for Django Models.

How I believe the fields should look like

created_at = models.DateTimeField(_("Created at"), auto_now_add=True, db_index=True)
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_("Created by"), blank=True, null=True,
                                   related_name="%(app_label)s_%(class)s_created", on_delete=models.SET_NULL, editable=False)
lastmodified_at = models.DateTimeField(_("Last modified at"), auto_now=True, db_index=True)
lastmodified_by = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_("Last modified by"), blank=True,
                                        null=True, related_name="%(app_label)s_%(class)s_lastmodified",
                                        on_delete=models.SET_NULL, editable=False)

No module named 'ai'

Following the README. Package ai_django_core is installed, app ai_django_core added in setttings.py as INSTALLED_APPS.

When running python manage.py runserver, failed w/ error (see title).

Here is my requirements.txt:

anyjson>=0.3.3
argcomplete>=0.8.7
astroid>=1.4.5
celery>=3.1.23
celerymon>=1.0.3
certifi>=14.5.14
colorama>=0.3.7
coverage>=4.1
defusedxml>=0.4.1
Django>=2.0.0
django-admin-bootstrapped>=2.3.2
django-annoying>=0.8.0
django-appconf>=0.6
django-autocomplete-light>=3.1.4
django-bootstrap3>=7.0.1
django-celery>=3.1.16
django-compressor>=1.4
django-cors-headers>=1.1.0
django-crispy-forms>=1.4.0
django-debug-toolbar>=1.2.2
django-devserver>=0.8.0
django-extensions>=1.6.1
django-extra-views>=0.6.4
django-filter>=0.9.2
django-localflavor>=1.1
django-model-utils>=2.2
django-tastypie>=0.13.3
django-tastypie-swagger>=0.1.4
djangorestframework>=3.3.3
Jinja2>=2.8
psycopg2>=2.8.4
redis>=2.10.3
requests>=2.5.1
requests-oauthlib>=0.4.2
simplejson>=3.6.5
six>=1.9.0
mysqlclient>=1.4.6
numpy
selenium
yahooquery
django-extensions
docutils
pyyaml
newscatcher
gunicorn
ai-django-core

when txt email is send, assert_body_contains raises an error

I'm sending an email as txt not html and when i try to use assert_body_contains, this error is raised:

Traceback (most recent call last):
  File "/home/user/workspace/project/user_auth/tests.py", line 35, in test_get_profile
    mails.assert_body_contains('receiving')
  File "/home/user/workspace/project/venv/lib/python3.8/site-packages/ai_django_core/mail/services/tests.py", line 197, in assert_body_contains
    self.assertIn(search_str, self._get_html_content(), msg=msg)
  File "/home/user/workspace/project/venv/lib/python3.8/site-packages/ai_django_core/mail/services/tests.py", line 108, in _get_html_content
    return self._match_list[0].alternatives[0][0]
IndexError: list index out of range

I think there is missing an option to disable the assertIn check in line 197 in services/tests.py or a check if len(alternatives) > 0.

DjangoPermissionRequiredMixin: UnitTests fail even when only the order of permissions changes

Hi,

I have recently started using your package after getting introduced to it from Ronny and it has been really helpful in bringing order and structure to my project. So first thank you very much for publishing this package and for maintaining it.

I am currently finding that the unittests for views with DjangoPermissionRequiredMixin fails when the order of permissions changes, i.e., the permission items are the same but with different order. Is assertCountEqual instead of assertEqual a possible option here ? , to compare the permissions defined between test and the actual view class ?

Thanks!

BR

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.