Webfrontend #960

licensee role

Added by Thomas Mielke about 4 years ago. Updated about 4 years ago.

Status:ErledigtStart date:01/11/2020
Priority:HochDue date:01/17/2020
Assignee:Thomas Mielke% Done:

100%

Category:-Estimated time:1.00 h
Target version:Prototype 2.2) Licencing GUISpent time:25.00 h

Associated revisions

Revision 08ec13dc
Added by Thomas Mielke about 4 years ago

LicensingResource; ref #960

Revision d47b2517
Added by Thomas Mielke about 4 years ago

added licensing dashboard; ref #960

Revision 9fdc74fa
Added by Thomas Mielke about 4 years ago

added icons for licensing menu; ref #960

Revision 5d7c0db9
Added by Thomas Mielke about 4 years ago

added device views for tryton client and web gui; ref #960

Revision 74e9e711
Added by Thomas Mielke about 4 years ago

updated README, fixed source level debugging support in DOCKERFILE, changed 'Client' model to 'Device'; ref #960

Revision 02250c05
Added by Thomas Mielke about 4 years ago

changed 'Client' model to 'Device'; ref #960

Revision 49dfcad5
Added by Thomas Mielke about 4 years ago

add device form; ref #960

History

#1 Updated by Thomas Mielke about 4 years ago

alex:

könnte natürlich sein, dass irgendetwas nicht mehr funktioniert.
aber eigentlich sollte es funktionieren, ist ein bootstrap nav menü, das wie tabs aussieht, soweit ich mich entsinne.
farben kann ich später nachreichen.
lizenzierung ist in meinem kopf gelb.

#2 Updated by Thomas Mielke about 4 years ago

  • Subject changed from neuen Tab für Verwreter to licensee role
  • Due date set to 01/17/2020
  • Assignee changed from Thomas Mielke to Alexander Blum
  • Start date set to 01/11/2020
  • % Done changed from 0 to 10

ok, wie geht's jetzt weiter?

Wahrscheinlich views bauen, oder?

Dann muss die ganze Rechtestruktur für Licensees geschaffen werden, nicht?

Wie bekomme ich ein Dashboard für den Lizenznehmer?

Du sprachst von Tabs. Wahrscheinlich wirklich nicht schlecht, um das deutlicher zu machen in der GUI. Da muss ich das css anpassen, richtig?

Gib mir bitte noch mal ein paar pointer, bevor ich jetzt lange suche.

#3 Updated by Thomas Mielke about 4 years ago

"Use Work" ist nur ein Provisorium. Wie soll der Bereich heißen? "Lizenzierung" bzw "Licensing"? Was hatten wir da noch mal gesagt?

#4 Updated by Alexander Blum about 4 years ago

Thomas Mielke wrote:

Wie soll der Bereich heißen? "Lizenzierung" bzw "Licensing"?

Genau

ok, wie geht's jetzt weiter?

Offenbar müsste in der Registry das menu/main noch umgehangen werden, also von der BackendResource in die RepertoireResource.

Dann für Licensing neue Resourcen bauen (anaolg zu den Repertoire Resourcen) samt weiteren Resourcen entsprechend der vorgesehenen Menüstruktur:

  • Declarations / Anmeldungen
  • Playlists / Musiklisten
  • Locations / Orte
  • Geräte / Devices
  • Accounting / Abrechnung
  • (Statistics / Statistiken)

Wie ich sehe, gibt es schon eine "UseworkResource" - da bitte alles entsprechend in Licensing umbenennen. Die Rolle müsste auch 'licensee' sein (wird dann aber auch nur Webusern mit entsprechender Rolle erlaubt). Der Ordnung halber am besten auch die hierarchisch zusammenhängenden Resourcen untereinander stehen lassen.

Dann die Views und Templates erstellen und die Views mit der Resource und dem Template verknüpfen. Im Moment leitet das generische Dashboard automatisch auf Repertoire weiter - hier müsste man entscheiden, wie man das handhaben will (erstmal so lassen würde für webuser mit nur licensee Rolle fehlschlagen, da das Repertoire Dashboard ja nicht erreichbar wäre).

Dann muss die ganze Rechtestruktur für Licensees geschaffen werden, nicht?

Rechtestruktur?

Die Rolle "licensee" existiert schon, die für die Permissions der Views notwendig ist - es müssen nur die Webuser die Rolle auch bekommen (wird in den Testdaten generiert).

Die restliche ACL Struktur ist für Dich erst mal nicht relevant, glaube ich.

Wie bekomme ich ein Dashboard für den Lizenznehmer?

Analog zur Repertoire:
* Resource
* View
* Template

Du sprachst von Tabs. Wahrscheinlich wirklich nicht schlecht, um das deutlicher zu machen in der GUI. Da muss ich das css anpassen, richtig?

Tabs sind es ja schon. Meinst Du die Farbe? Dann ja, das wird über CSS gemacht.

#5 Updated by Thomas Mielke about 4 years ago

uhhh... ich hab den Eindruck dass ich da in was herumstümpere, ohne es zu verstehen. Ist das Ressource-System irgendwo extern dokumentiert?

Das sind so Kleinigkeiten, über die ich ständig stolpere, wie das Klassen schrägerweise doppelt definiert werden und ich habe keine Ahnung wieso.

class ArtistsResource(ResourceBase):
class ArtistResource(ModelResource):

Ist wohl besser, ich warte bis Mittwoch, wenn Du wieder erreichbar bist, bevor ich weiter Kaffeesatzleserei betreibe...

#6 Updated by Alexander Blum about 4 years ago

Thomas Mielke wrote:

Ist das Ressource-System irgendwo extern dokumentiert?

Genrell:

Spezifisch:

In die Resources ist die Registry eingebaut, die entsprechend der Resource-Hierarchie zusammengebaut wird (Parents vererben den Baum an Children, Children können Blätter/Zweige überschreiben). In den Templates werden dann die anzuzeigenden Menüpunkte aus der Registry entnommen:

Thomas Mielke wrote:

das Klassen schrägerweise doppelt definiert werden

class ArtistsResource(ResourceBase):
class ArtistResource(ModelResource):

Werden sie nicht: Artist*s* und Artist:

                Artist*s*Resource
                    |
                    v
URL: /repertoire/artists/1
         ^               ^
         |               |
    RepertoireResource  ArtistResource

(Edit: Link korrigiert)

#7 Updated by Thomas Mielke about 4 years ago

Den kleinen Unterschied habe ich, glaube ich, nicht das erste Mal übersehen. Hab mal docstrings für die Ressource-Klassen hinzugefügt.

#8 Updated by Thomas Mielke about 4 years ago

  • % Done changed from 10 to 20

Soweit habe ich mich erst einmal durchgeschlagen und einen Dashboard-View gebaut:

https://github.com/C3S/collecting_society_web/commit/d47b251734c222f7d3de0647240014ce8e254d77

Bei http://collecting_society.test/licensing/ bekomme ich aber ein

403 Forbidden
Access was denied to this resource.
Unauthorized: LicensingViews failed permission check

Das sollte doch mit

class LicensingResource(ResourceBase):
    __parent__ = BackendResource
    __name__ = "licensing"
    __acl__ = [
        # add basic access for user with the role licensee
        (Allow, 'licensee', (
            'authenticated',
            'list_devices',
            'add_device',
        )),
        # prevent inheritance from backend resource
        DENY_ALL
    ]

gehen, oder? In

@view_defaults(
    context='..resources.LicensingResource')
class LicensingViews(ViewBase):

    @view_config(
        name='',
        permission='authenticated')
    def root(self):
        return self.redirect('dashboard')

    @view_config(
        name='dashboard',
        renderer='../templates/licensing/dashboard.pt',
        permission='authenticated')
    def dashboard(self):
        return {}

prüfe ich auf 'authenticated', aber mir fehlt hier noch die Verknüpfung mit der Rolle "licensee", wo Du meintest, die wäre schon vorbereitet. Wo passiert das?

#9 Updated by Alexander Blum about 4 years ago

Einige Anmerkungen (können wir aber besser am MI besprechen):

  • Ressourcen selbst sind eigenständig und können mehrfach irgendwo eingehängt werden, daher passen Deine Docstringtexte eher in die includes.py, in der die Hierarchie gebaut wird.
  • 'inactive' müsste wahrscheinlich hier active heißen? Das active klärt, wann ein Menüpunkt aktiv ist. Gibt es inactive überhaupt im template?
  • Du redefinierst hier menu/roles, das wird aber schon von der BackendRessource übernommen?

aber mir fehlt hier noch die Verknüpfung mit der Rolle "licensee", wo Du meintest, die wäre schon vorbereitet. Wo passiert das?

Die Rolle selbst existiert, aber wird noch keinem WebUser zugeordnet. Die relevante Stelle ist hier, bei dem alle Test WebUser die Rolle 'licenser' bekommen. Hier könntest Du erst mal allen auch die andere Rolle geben, irgendwann braucht es alle drei Fälle (nur licener, nur licensee, beides).

#10 Updated by Thomas Mielke about 4 years ago

  • Assignee changed from Alexander Blum to Thomas Mielke
  • % Done changed from 20 to 30

#11 Updated by Thomas Mielke about 4 years ago

  • % Done changed from 30 to 80

#12 Updated by Thomas Mielke about 4 years ago

  • % Done changed from 80 to 90

#13 Updated by Thomas Mielke about 4 years ago

  • Status changed from Neu to Erledigt
  • % Done changed from 90 to 100

Also available in: Atom PDF