Coder Social home page Coder Social logo

basxsoftwareassociation / basxconnect Goto Github PK

View Code? Open in Web Editor NEW
24.0 3.0 6.0 3.63 MB

Core Implementation of a CRM system for non-profit organizations

Home Page: https://connect.basx.org/

License: BSD 3-Clause "New" or "Revised" License

Makefile 0.03% Python 99.97%
django crm crm-system non-profit database

basxconnect's Introduction

basxconnect-ci Translation status

basxconnect

A core implementation of a CRM system for non-profit organizations.

Documentation at readthedocs

Vision

Providing non-profit organizations with a code framework that helps to build tools for managing their data.

Mission

Create and maintain a django-based framework which implements:

  • A standardized UI concept based on IBM's carbon design system
  • CRM-like core data models which are open to extension
  • Code building blocks and shortcuts which allow easy customization and extension

Core values

  • Open source development (this, however does not include free support)
  • Use of existing and proven technology where possible while minimizing external dependencies
  • Focus on workflows and tasks for Non-Profit organizations (User experience)
  • Writing code and APIs for developers, not for website administrators (Developer experience)
  • Development does not center around a final product but around the tools to create a product (because every product is different)

What we have so far

  • Integration of the core parts of carbon design in django ("like bootstrap for django")
  • CRUD-framework ("Quick generation of create/read/update/delete views")
  • HTML-layout framework which allows a more flexible hooking-in than the standard HTML-rendering mechanisms ("DOM on the server side")
  • Core model to manage people, communication and relationships
  • Additional modules for:
    • Generating reports
    • Generating documents and PDFs from word templates
    • Custom add/edit forms
    • Data import from PDFs with form-fields
    • Customiable Database triggers to send notification emails
    • Invoicing module
  • Demo project which implements a bare-bone version of a product (this repository)

What we still need to do

  • Improving the existing code base to have better support for extendability
  • Write documentation where necessary and add code-examples and how-to's
  • Implement revisions completely to allow going to a certain date and maybe display diffs

Other TODOs:

  • Explain more why basxConnect is necessary and the difference to alternative solutions

We would like to thank the following projects for their work, they provide a valuable base for basxConnect:

basxconnect's People

Contributors

comradekingu avatar dward2nd avatar frederikbugglin avatar freebeat avatar lisapple avatar nathanbnm avatar neuza-lima7 avatar saemideluxe avatar santossi avatar tidaphan avatar tpokorra avatar wipascal 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

Watchers

 avatar  avatar  avatar

basxconnect's Issues

Duplicating reports

When duplicating an existing report definition, only the filter definition is copied but no the selected columns for output:
Bildschirmfoto 2021-03-22 um 09 21 18

Suggested improvement: Rename the existing report title by adding "copy" as a suffix to clearly mark and identify the copied entry:
Bildschirmfoto 2021-03-22 um 09 23 09

Add proper CI (github workflows?)

Things needed to do:

  • black formatting
  • flake8 checks
  • isort (ordering import statements)
  • bandit (dependency vulnerability checks)
  • run tests and coverage
  • update pip package if there is a new release

Duplicate entry 'associationtype' for categories

I get this error in my nightly test build:
https://lbs.solidcharity.com/package/basx/basxconnect/basxconnect-test#main_centos/8/amd64

Applying core.0017_category_association_type...Traceback (most recent call last):
[00:05:34]   File "/home/django/basxconnect_demo/.venv/lib64/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
[00:05:34]     return self.cursor.execute(sql, params)
[00:05:34]   File "/home/django/basxconnect_demo/.venv/lib64/python3.6/site-packages/django/db/backends/mysql/base.py", line 73, in execute
[00:05:34]     return self.cursor.execute(query, args)
[00:05:34]   File "/home/django/basxconnect_demo/.venv/lib64/python3.6/site-packages/MySQLdb/cursors.py", line 206, in execute
[00:05:34]     res = self._query(query)
[00:05:34]   File "/home/django/basxconnect_demo/.venv/lib64/python3.6/site-packages/MySQLdb/cursors.py", line 319, in _query
[00:05:34]     db.query(q)
[00:05:34]   File "/home/django/basxconnect_demo/.venv/lib64/python3.6/site-packages/MySQLdb/connections.py", line 259, in query
[00:05:34]     _mysql.connection.query(self, query)
[00:05:34] MySQLdb._exceptions.IntegrityError: (1062, "Duplicate entry 'associationtype' for key 'slug'")

The reason is this commit: 37c2cdb#diff-ce51dd213b60c06bc89425fe749aa3807a3d17bb7084e4ae77d145604ab5411a

The category associationtype is now already added in migration 0006_preload_categories.py.
The category associationtype does not need to be added anymore in https://github.com/basxsoftwareassociation/basxconnect/blob/main/basxconnect/core/migrations/0017_category_association_type.py

I am not sure if the commit was a mistake, or if 0017_category_association_type.py should be adjusted.

Export *person.id* in Reports

column title in exported file: Stamm-Nr.

(needed as a merge field in Word for mailings (e.g. as an identifier for postal returns))

UI Improvements of tab «Relationship»

Bildschirmfoto 2021-04-06 um 12 05 05

  • Person A is always the currently displayed person > there column "Person A" is not necessary
  • Data table title missing
  • data table inline adding for new relationship (instead of opening a new page)
  • Rename "Beziehungen" to "Verknüpfungen"
  • Removal/edit function of existing relationship is missing
  • Person no. in brackets is missing
  • Person B: cell must be a link

Performance of search index (haystack/woosh)

Performance of the search index seems to be rather slow (multiple seconds until the request returns with roughly 2500 persons). Needs to be improved.

Possible reasons:

  • Slow harddisk on NAS (but only part of the problem, there is a significant delay even with SSD on localhost)
  • Index uses no memory cache, always full disk reads
  • Indexing of django models with inheritance is badly/wrong configured
  • View method has an issue while rendering the results.

Recommendation: Profile/measure first, then decide what to do.

Add filtered fields to Excel file download

When a filter is applied and an Excel file will be downloaded, the content of the selected fields should be added in columns: person type, person sub type, tags, language, state:

Bildschirmfoto 2021-05-18 um 11 08 42

Please make sure this is added to the next release

renaming issues: no module named basxconnect.core.layouts.editperson_association

I have issues building:

[00:06:59]   File "/home/django/basxconnect_demo/.venv/lib/python3.7/site-packages/basxconnect/core/views.py", line 21, in <module>
[00:06:59]     from basxconnect.core.layouts.editperson_association import editperson_association_tabs
[00:06:59] ModuleNotFoundError: No module named 'basxconnect.core.layouts.editperson_association'

I get this error in basxconnect_demo, when I run either of these commands:

. .venv/bin/activate && python manage.py migrate
. .venv/bin/activate && python manage.py compress --force

Auto completion

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
Certain fields should auto complete while the user is typing (e.g. when enter zip code the systems automagically suggest the corresponding place in a dropdown menu) .

Describe alternatives you've considered
None

Additional context
https://www.post.ch/de/geschaeftsloesungen/adressmanagement/adress-und-geodaten

Settings / General

  • Remove form field "Typ"
  • Change current field names according to design
  • max. column width = span? 6 cols
  • Optional: Add logo upload functionality (for branding purposes, e.g. used in ui shell header or for future PDF-Reports, etc.)

Allgemein

Bildschirmfoto 2021-03-16 um 14 56 32

github workflows: don't fail on bandit but display warning

Sometimes Bandit will give an error, but you only want to fix it later, not immediately.
It would be good if we can display a warning, but not fail the whole job.

See this discussion: actions/runner#2347

Alternatively, we could use Travis CI, but it seems they are just changing something:
https://travis-ci.org/getting_started "Please be aware travis-ci.org will be shutting down in several weeks, with all accounts migrating to travis-ci.com. Please stay tuned here for more information. "

GDPR-and-friends-compliant delete processes

This is coming up in all database systems as a requirements, I think we would strongly benefit from having this as a well implemented feature. The core implemention should just be able to detect, display and remove all related data of an object. In theory we rely strongly on the cascade deletion feature of the database and just delete associated files and entries in the revision tables. In practive we will need to make this very configurable in order to allow for handling anonymized and business-relevant data.

One idea could be to simply blank and/or replace all fields of all related data and delete associated files.
Other ideas are welcome.

Questions which need to be addressed:

  • Deleting relevant information
    • Approach: Deleting database objects or blanking all fields?
    • How to handle revision entries?
    • How to handle file removal? (This might be trickier than it seems)
    • How are backups handled?
  • Keeping business-relevant/legaly required data
    • Needs a configuration system to specify data which needs to be preserved.
    • Possible solutions: Clearing fields, having separate "statistics/history" models
  • Automated removal of records/triggers
    • Necessary at all? Or should all things be deleted manually (maybe with notifications)?
  • Related issues:
    • Should processes for data extraction/personal record be considered? Like when a person wants to know "What information about me do you have stored in your system?"

Active search bar improvements

  • display each found item on one single line
  • emphasize found search term semibold 600
  • 0% opacity for search results background
  • include a loading indicator. when search completed, display number of found items instead (e.g. 3 items found)
  • enable search by person id
  • Default state for Search bar: active (background-color=#fff)

Active Search bar results

include person id in search results
Bildschirmfoto 2021-03-16 um 10 44 09

high prio

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.