Skip to main content

Kurzbeschreibung deines Pakets

Project description

GeneralManager

Überblick

Das GeneralManager-Modul ist ein leistungsstarkes und flexibles Framework, das speziell für die Verwaltung und Verarbeitung von Daten entwickelt wurde. Es bietet eine modulare Struktur, die es Entwicklern ermöglicht, komplexe Geschäftslogiken effizient zu implementieren und zu verwalten. Das Modul ist vollständig in Python geschrieben und nutzt Django als Backend-Framework.

Hauptfunktionen

1. Datenmanagement

  • Flexibilität: Unterstützt die Verwaltung aller Arten von Daten, nicht nur Projekte und Derivate.
  • Datenbank-Integration: Nahtlose Integration mit dem Django ORM für Datenbankoperationen.
  • Externe Schnittstellen: Unterstützung für Schnittstellen zu anderen Programmen, wie z. B. Excel-Interfaces.

2. Datenmodellierung

  • Django-Modelle: Die Datenstruktur basiert auf Django-Modellen, die durch benutzerdefinierte Felder wie MeasurementField erweitert werden.
  • Regeln und Validierungen: Definieren Sie Regeln für Datenvalidierungen, z. B. dass das Startdatum eines Projekts vor dem Enddatum liegen muss.

3. GraphQL-Integration

  • Automatische Generierung von GraphQL-Schnittstellen für alle Modelle.
  • Unterstützung für benutzerdefinierte Abfragen und Mutationen.

4. Berechtigungssystem

  • ManagerBasedPermission: Ein flexibles Berechtigungssystem, das auf Benutzerrollen und Attributen basiert.
  • Unterstützung für CRUD-Berechtigungen auf Attributebene.

5. Interfaces

  • CalculationInterface: Ermöglicht die Implementierung von Berechnungslogiken.
  • DatabaseInterface: Bietet eine standardisierte Schnittstelle für Datenbankoperationen.
  • ReadOnlyInterface: Für schreibgeschützte Datenzugriffe.

6. Datenverteilung und Berechnung

  • Volumenverteilung: Automatische Berechnung und Verteilung von Volumen über mehrere Jahre.
  • Kommerzielle Berechnungen: Berechnung von Gesamtvolumen, Versandkosten und Einnahmen für Projekte.

Anwendung

Installation

Installieren Sie das Modul über pip:

pip install GeneralManager

Beispielcode

Hier ist ein Beispiel, wie Sie einen GeneralManager erstellen und Testdaten (in diesem Fall 10 Projekte) generieren können:

from general_manager import GeneralManager
from general_manager.interface.database import DatabaseInterface
from general_manager.measurement import MeasurementField, Measurement
from general_manager.permission import ManagerBasedPermission

class Project(GeneralManager):
    name: str
    start_date: Optional[date]
    end_date: Optional[date]
    total_capex: Optional[Measurement]
    derivative_list: DatabaseBucket[Derivative]

    class Interface(DatabaseInterface):
        name = CharField(max_length=50)
        number = CharField(max_length=7, validators=[RegexValidator(r"^AP\d{4,5}$")])
        description = TextField(null=True, blank=True)
        start_date = DateField(null=True, blank=True)
        end_date = DateField(null=True, blank=True)
        total_capex = MeasurementField(base_unit="EUR", null=True, blank=True)

        class Meta:
            constraints = [
                constraints.UniqueConstraint(
                    fields=["name", "number"], name="unique_booking"
                )
            ]

            rules = [
                Rule["Project"](
                    lambda x: cast(date, x.start_date) < cast(date, x.end_date)
                ),
                Rule["Project"](lambda x: cast(Measurement, x.total_capex) >= "0 EUR"),
            ]

        class Factory:
            name = LazyProjectName()
            end_date = LazyDeltaDate(365 * 6, "start_date")
            total_capex = LazyMeasurement(75_000, 1_000_000, "EUR")

    class Permission(ManagerBasedPermission):
        __read__ = ["ends_with:name:X-771", "public"]
        __create__ = ["admin", "isMatchingKeyAccount"]
        __update__ = ["admin", "isMatchingKeyAccount", "isProjectTeamMember"]
        __delete__ = ["admin", "isMatchingKeyAccount", "isProjectTeamMember"]

        total_capex = {"update": ["isSalesResponsible", "isProjectManager"]}

Project.Factory.createBatch(10)

GraphQL-Integration

Das Modul generiert automatisch GraphQL-Schnittstellen für alle Modelle. Sie können Abfragen und Mutationen über die GraphQL-URL ausführen, die in den Django-Einstellungen definiert ist.

Beispiel für eine GraphQL-Abfrage:

query {
  projectList {
    name
    startDate
    endDate
    totalCapex {
      value
      unit
    }
  }
}

Vorteile

  • Modularität: Einfach erweiterbar und anpassbar.
  • Flexibilität: Unterstützt komplexe Geschäftslogiken und Berechnungen.
  • Integration: Nahtlose Integration mit Django und GraphQL.
  • Berechtigungen: Fein abgestimmte Berechtigungen für Benutzer und Attribute.
  • Datenvalidierung: Automatische Validierung von Daten durch Regeln und Constraints.
  • Caching: Automatische Cache-Generierung mit @cached Decorator, um die Leistung zu verbessern.

Anforderungen

  • Python >= 3.12
  • Django >= 5.2
  • Zusätzliche Abhängigkeiten (siehe requirements.txt):
    • graphene
    • numpy
    • Pint
    • factory_boy
    • uvm.

Lizenz

Dieses Projekt steht unter der Non-Commercial MIT License. Es darf nur für nicht-kommerzielle Zwecke verwendet werden. Weitere Details finden Sie in der LICENSE.

Project details


Release history Release notifications | RSS feed

This version

0.0.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

generalmanager-0.0.0.tar.gz (54.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

generalmanager-0.0.0-py3-none-any.whl (59.6 kB view details)

Uploaded Python 3

File details

Details for the file generalmanager-0.0.0.tar.gz.

File metadata

  • Download URL: generalmanager-0.0.0.tar.gz
  • Upload date:
  • Size: 54.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for generalmanager-0.0.0.tar.gz
Algorithm Hash digest
SHA256 f45d7a77f1df9a627728aac2664bad0b87c252ddd0be861a6d9164df7b410390
MD5 19e630adea76c8c2cff84b2c1faea654
BLAKE2b-256 00c27df5869828b0b24c989059baa7c69c915e7a97a5172833ee9b2b32556565

See more details on using hashes here.

File details

Details for the file generalmanager-0.0.0-py3-none-any.whl.

File metadata

  • Download URL: generalmanager-0.0.0-py3-none-any.whl
  • Upload date:
  • Size: 59.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for generalmanager-0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 497d77f7f3bd126978ba6d2286c9c2884f430ec9c9d151fd6bed7501c343cd8f
MD5 f076d793760d59f229ea0cf6c1f6e88f
BLAKE2b-256 450a7fb487cc2fbdb63ff97372056102fa9a18f4eb103f8cfbbf14495e3b2a0d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page