mirror of
https://github.com/yweber/lodel2.git
synced 2026-01-24 15:00:12 +01:00
Commands
This commit is contained in:
parent
1411fb2b47
commit
0705fc9177
6 changed files with 410 additions and 414 deletions
|
|
@ -1,17 +1,13 @@
|
|||
#!/usr/bin/python3
|
||||
#-*- coding: utf-8 -*-
|
||||
import sys
|
||||
import os, os.path
|
||||
|
||||
sys.path.append(os.path.dirname(os.getcwd()+'/..'))
|
||||
# A voir si utile dans un lodel installé
|
||||
|
||||
from lodel.settings.settings import Settings as settings
|
||||
settings('globconf.d')
|
||||
from lodel.settings import Settings
|
||||
sys.path.insert(0,'lodel/editorial_model')
|
||||
from model import EditorialModel
|
||||
|
||||
from lodel.editorial_model.components import *
|
||||
from lodel.editorial_model.exceptions import *
|
||||
from lodel.editorial_model.model import EditorialModel
|
||||
xml_file = '../examples/em_simple.xml'
|
||||
pickle_file = '../examples/em_simple.pickle'
|
||||
|
||||
em = EditorialModel('simpleem', 'Simple editorial model')
|
||||
|
||||
|
|
@ -689,7 +685,7 @@ user.new_field(
|
|||
group = user_group, data_handler = 'password', internal = False)
|
||||
|
||||
|
||||
em.save('xmlfile', filename = 'editorial_models/em_simple.xml')
|
||||
pickle_file = 'examples/em_simple.pickle'
|
||||
em.save('xmlfile', filename = xml_file)
|
||||
em.save('picklefile', filename = pickle_file)
|
||||
print("Output written in %s" % pickle_file)
|
||||
|
||||
print("Output written in %s and %s" % (pickle_file, xml_file))
|
||||
|
|
|
|||
397
editorial_models/em_test.py
Normal file
397
editorial_models/em_test.py
Normal file
|
|
@ -0,0 +1,397 @@
|
|||
import sys
|
||||
|
||||
sys.path.insert(0,'lodel/editorial_model')
|
||||
from model import EditorialModel
|
||||
|
||||
xml_file = 'examples/em_test.xml'
|
||||
pickle_file = 'examples/em_simple.pickle'
|
||||
|
||||
em = EditorialModel('testem', 'Test editorial model')
|
||||
base_group = em.new_group(
|
||||
'base_group',
|
||||
display_name='Base group',
|
||||
help_text = 'Base group that implements base EM features (like classtype)')
|
||||
|
||||
################
|
||||
# Lodel object #
|
||||
################
|
||||
em_abstract = em.new_class(
|
||||
'abstract_object',
|
||||
display_name='Abstract lodel object',
|
||||
help_text = 'For testing purpose',
|
||||
group=base_group,
|
||||
abstract=True)
|
||||
em_object = em.new_class(
|
||||
'object',
|
||||
display_name='Object',
|
||||
help_text='Main class for all Em objects',
|
||||
group=base_group,
|
||||
abstract=True,
|
||||
parents=em_abstract,)
|
||||
em_object.new_field(
|
||||
'lodel_id',
|
||||
display_name='Lodel identifier',
|
||||
help_text='Uniq ID that identify every lodel object',
|
||||
group=base_group,
|
||||
data_handler='uniqid',
|
||||
internal=True,)
|
||||
em_object.new_field(
|
||||
'help_text',
|
||||
display_name='Help',
|
||||
help_text='A short text that describe the object',
|
||||
group=base_group,
|
||||
internal=True,
|
||||
data_handler='text',)
|
||||
em_object.new_field(
|
||||
'date_create',
|
||||
display_name='Creation date',
|
||||
group=base_group,
|
||||
data_handler='datetime',
|
||||
now_on_create=True,
|
||||
internal=True,)
|
||||
em_object.new_field(
|
||||
'date_update',
|
||||
display_name='Last update',
|
||||
group=base_group,
|
||||
data_handler='datetime',
|
||||
now_on_update=True,
|
||||
internal=True,)
|
||||
|
||||
########################
|
||||
# Lodel old classtypes #
|
||||
########################
|
||||
entitie = em.new_class(
|
||||
'entitie',
|
||||
display_name='entitie',
|
||||
help_text='Replace old entity classtype',
|
||||
abstract=True,
|
||||
group=base_group,
|
||||
parents=em_object,)
|
||||
person = em.new_class(
|
||||
'person',
|
||||
display_name='Person',
|
||||
help_text='Replace old person classtype',
|
||||
abstract=False,
|
||||
group=base_group,
|
||||
parents=em_object,)
|
||||
person.new_field(
|
||||
'firstname',
|
||||
display_name = {
|
||||
'eng': 'Firstname',
|
||||
'fre': 'Prénom',
|
||||
},
|
||||
data_handler = 'varchar',
|
||||
group = base_group,)
|
||||
person.new_field(
|
||||
'lastname',
|
||||
display_name = {
|
||||
'eng': 'Lastname',
|
||||
'fre': 'Nom de famille',
|
||||
},
|
||||
data_handler = 'varchar',
|
||||
group = base_group,)
|
||||
person.new_field(
|
||||
'fullname',
|
||||
display_name = {
|
||||
'eng': 'Fullname',
|
||||
'fre': 'Nom complet',
|
||||
},
|
||||
group = base_group,
|
||||
data_handler = 'Concat',
|
||||
field_list = ['firstname', 'lastname'],
|
||||
immutable = True,)
|
||||
person.new_field(
|
||||
'alias',
|
||||
display_name = 'alias',
|
||||
help_text = {
|
||||
'eng': 'Link to other person class instance that represent the same person',
|
||||
'fre': 'Lien vers un ensemble d\'instances de la classe personne représentant le même individu',
|
||||
},
|
||||
data_handler = 'set',
|
||||
allowed_classes = [person],
|
||||
default = None,
|
||||
nullable = True,
|
||||
group = base_group,)
|
||||
entry = em.new_class(
|
||||
'entry',
|
||||
display_name = 'Entry',
|
||||
help_text = 'Replace olf entry classtype',
|
||||
abstract = True,
|
||||
group = base_group,
|
||||
parents = em_object,)
|
||||
|
||||
#####################
|
||||
# Editorial classes #
|
||||
#####################
|
||||
editorial_group = em.new_group(
|
||||
'editorial_abstract',
|
||||
display_name = 'Editorial base',
|
||||
help_text = {
|
||||
'eng': 'Contains abstract class to handler editorial contents',
|
||||
'fre': 'Contient les classes abstraites permetant la gestion de contenu éditorial'
|
||||
},
|
||||
depends = (base_group,))
|
||||
|
||||
# Classe texte
|
||||
text = em.new_class(
|
||||
'text',
|
||||
display_name = 'Text',
|
||||
help_text = 'Abstract class that represent texts',
|
||||
group = editorial_group,
|
||||
abstract = True,
|
||||
parents = entitie,)
|
||||
text.new_field(
|
||||
'title',
|
||||
display_name = {'eng': 'Title', 'fre': 'Titre'},
|
||||
group = editorial_group,
|
||||
data_handler = 'varchar',
|
||||
nullable = True,)
|
||||
text.new_field(
|
||||
'subtitle',
|
||||
display_name = { 'eng': 'Subtitle', 'fre': 'Sous-titre',},
|
||||
group = editorial_group,
|
||||
data_handler = 'varchar',
|
||||
nullable = True,
|
||||
default = None)
|
||||
|
||||
# Classe collection
|
||||
collection = em.new_class(
|
||||
'collection',
|
||||
display_name = 'Collection',
|
||||
group = editorial_group,
|
||||
abstract = False,
|
||||
parents = entitie)
|
||||
collection.new_field(
|
||||
'title',
|
||||
display_name = 'Title',
|
||||
group = editorial_group,
|
||||
data_handler = 'varchar')
|
||||
|
||||
# Classe publication
|
||||
publication = em.new_class( 'publication',
|
||||
display_name = 'Publication',
|
||||
group = editorial_group,
|
||||
abstract = False,
|
||||
parents = entitie,)
|
||||
publication.new_field( 'collection',
|
||||
display_name = 'Collection',
|
||||
group = editorial_group,
|
||||
data_handler = 'link',
|
||||
default = None,
|
||||
nullable = True,
|
||||
allowed_classes = [collection],
|
||||
back_reference = ('collection', 'publications'))
|
||||
collection.new_field( 'publications',
|
||||
display_name = 'Publications',
|
||||
group = editorial_group,
|
||||
data_handler = 'list',
|
||||
allowed_classes = [publication],
|
||||
back_reference = ('publication', 'collection'))
|
||||
|
||||
#########################
|
||||
# Texte definition #
|
||||
#########################
|
||||
|
||||
section = em.new_class('section',
|
||||
display_name = 'Section',
|
||||
group = editorial_group,
|
||||
abstract = False,
|
||||
parents = text)
|
||||
subsection = em.new_class( 'subsection',
|
||||
display_name = 'Subsection',
|
||||
group = editorial_group,
|
||||
abstract = False,
|
||||
parents = section)
|
||||
section.new_field( 'childs',
|
||||
display_name = 'Next section',
|
||||
group = editorial_group,
|
||||
data_handler = 'hierarch',
|
||||
allowed_classes = [subsection],
|
||||
back_reference = ('subsection', 'parent'),
|
||||
default = None,
|
||||
nullable = True)
|
||||
subsection.new_field( 'parent',
|
||||
display_name = 'Parent',
|
||||
group = editorial_group,
|
||||
data_handler = 'link',
|
||||
default = None,
|
||||
nullable = True,
|
||||
allowed_classes = [section],
|
||||
back_reference = ('section', 'childs'))
|
||||
|
||||
#####################
|
||||
# Persons & authors #
|
||||
#####################
|
||||
editorial_person_group = em.new_group( 'editorial_person',
|
||||
display_name = 'Editorial person',
|
||||
help_text = {
|
||||
'eng': 'Introduce the concept of editorial person (authors, translator etc)',
|
||||
'fre': 'Contient les classes servant à la gestion des personnes editorials (auteurs, traducteur...)',
|
||||
},
|
||||
depends = (editorial_group,))
|
||||
text_person = em.new_class( 'text_person',
|
||||
display_name = {
|
||||
'eng': 'TextPerson',
|
||||
'fre': 'TextePersonne',
|
||||
},
|
||||
help_text = {
|
||||
'eng': 'Represent a link between someone and a text',
|
||||
'fre': 'Représente un lien entre une personne et un texte',
|
||||
},
|
||||
group = editorial_person_group,
|
||||
abstract = True,
|
||||
parents = entitie,)
|
||||
bref_textperson_text = text_person.new_field( 'text',
|
||||
display_name = {
|
||||
'eng': 'Linked text',
|
||||
'fre': 'Texte lié',
|
||||
},
|
||||
data_handler = 'link',
|
||||
allowed_classes = [text],
|
||||
group = editorial_person_group)
|
||||
bref_textperson_person = text_person.new_field( 'person',
|
||||
display_name = {
|
||||
'eng': 'Linked person',
|
||||
'fre': 'Personne liée',
|
||||
},
|
||||
data_handler = 'link',
|
||||
allowed_classes = [person],
|
||||
group = editorial_person_group,)
|
||||
text_person.new_field( 'role',
|
||||
display_name = {
|
||||
'eng': 'Person role',
|
||||
'fre': 'Role de la personne',
|
||||
},
|
||||
data_handler = 'varchar',
|
||||
group = editorial_person_group)
|
||||
|
||||
# simple example of linked text / person
|
||||
person.new_field( 'linked_texts',
|
||||
display_name = {
|
||||
'eng': 'Linked texts',
|
||||
'fre': 'Textes liés',
|
||||
},
|
||||
data_handler = 'list',
|
||||
back_reference = ('Text', 'linked_persons'),
|
||||
group = editorial_person_group,
|
||||
allowed_classes = [text],
|
||||
default = None,
|
||||
nullable = True)
|
||||
|
||||
text.new_field( 'linked_persons',
|
||||
display_name = {
|
||||
'eng': 'Linked persons',
|
||||
'fre': 'Personnes liées',
|
||||
},
|
||||
data_handler = 'list',
|
||||
back_reference = ('Person', 'linked_texts'),
|
||||
group = editorial_person_group,
|
||||
allowed_classes = [person],
|
||||
default = None,
|
||||
nullable = True)
|
||||
|
||||
#####################
|
||||
# Index classes # <--- Note : using a different datasource for testing
|
||||
##################### purpose
|
||||
|
||||
index_group = em.new_group( 'index_group',
|
||||
display_name = 'Indexes',
|
||||
help_text = {
|
||||
'eng': 'EM class that represents indexes'},
|
||||
depends = (editorial_group,))
|
||||
|
||||
index_abstract = em.new_class(
|
||||
'indexAbs',
|
||||
display_name = {'eng': 'Abstract Index'},
|
||||
help_text = {'eng': 'Abstract class common to each Index classes'},
|
||||
abstract = True,
|
||||
group = index_group,
|
||||
datasources = 'dummy2',
|
||||
parents = em_object)
|
||||
|
||||
index_name = index_abstract.new_field(
|
||||
'name',
|
||||
display_name = {
|
||||
'eng': 'name',
|
||||
'fre': 'nom'},
|
||||
data_handler = 'varchar',
|
||||
group = index_group)
|
||||
|
||||
index_value = index_abstract.new_field(
|
||||
'value',
|
||||
display_name = {
|
||||
'eng': 'value',
|
||||
'fre': 'valeur'},
|
||||
data_handler = 'varchar',
|
||||
group = index_group)
|
||||
|
||||
text.new_field( 'indexes',
|
||||
display_name = {'eng': 'Indexes', 'fre': 'Indexes'},
|
||||
data_handler = 'list',
|
||||
back_reference = ('Indexabs', 'texts'),
|
||||
allowed_classes = [index_abstract],
|
||||
default = None,
|
||||
nullable = True,
|
||||
group = index_group)
|
||||
|
||||
index_abstract.new_field( 'texts',
|
||||
display_name = {
|
||||
'eng': 'Text referenced by this index',
|
||||
'fre': 'Texte contenant cette index'},
|
||||
data_handler = 'list',
|
||||
back_reference = ('Text', 'indexes'),
|
||||
allowed_classes = [text],
|
||||
group = index_group)
|
||||
|
||||
index_theme = em.new_class(
|
||||
'indexTheme',
|
||||
display_name = {
|
||||
'eng': 'Thematic index',
|
||||
'fre': 'Index thématique'},
|
||||
group = index_group,
|
||||
datasources = 'dummy2',
|
||||
parents = index_abstract)
|
||||
|
||||
index_theme_theme = index_abstract.new_field(
|
||||
'theme',
|
||||
display_name = {
|
||||
'eng': 'theme'},
|
||||
data_handler = 'varchar',
|
||||
group = index_group)
|
||||
|
||||
#############
|
||||
# USERS #
|
||||
#############
|
||||
|
||||
user_group = em.new_group(
|
||||
'users', display_name = 'Lodel users',
|
||||
help_text = 'Group that handle users en perm')
|
||||
|
||||
user = em.new_class(
|
||||
'user', display_name = 'Lodel user', help_text = 'Represent a lodel user',
|
||||
group = user_group, abstract = False)
|
||||
|
||||
user.new_field(
|
||||
'id', display_name = 'user identifier', help_text = 'Uniq ID',
|
||||
group = user_group, data_handler = 'uniqid', internal = True)
|
||||
|
||||
user.new_field(
|
||||
'firstname', display_name = 'Firstname',
|
||||
group = user_group, data_handler = 'varchar', internal = False)
|
||||
|
||||
user.new_field(
|
||||
'lastname', display_name = 'Lastname',
|
||||
group = user_group, data_handler = 'varchar', internal = False)
|
||||
|
||||
user.new_field(
|
||||
'login', display_name = 'user login', help_text = 'login',
|
||||
group = user_group, data_handler = 'varchar', uniq = True, internal = False)
|
||||
|
||||
user.new_field(
|
||||
'password', display_name = 'Password',
|
||||
group = user_group, data_handler = 'password', internal = False)
|
||||
|
||||
em.save('xmlfile', filename = xml_file)
|
||||
em.save('picklefile', filename = pickle_file)
|
||||
|
||||
print("Output written in %s and %s" % (pickle_file, xml_file))
|
||||
|
|
@ -4,7 +4,7 @@ from flask.templating import render_template_string
|
|||
from flask_script import Command, Option
|
||||
|
||||
|
||||
class LodelCommand(Command):
|
||||
class CreateSite(Command):
|
||||
|
||||
option_list = (
|
||||
Option('--name', '-n', dest='name'),
|
||||
|
|
|
|||
|
|
@ -1,397 +0,0 @@
|
|||
from flask_script import Command
|
||||
from lodel.editorial_model.model import EditorialModel
|
||||
|
||||
class LodelCommand(Command):
|
||||
|
||||
def run(self):
|
||||
em = EditorialModel('testem', 'Test editorial model')
|
||||
base_group = em.new_group(
|
||||
'base_group',
|
||||
display_name='Base group',
|
||||
help_text = 'Base group that implements base EM features (like classtype)')
|
||||
|
||||
################
|
||||
# Lodel object #
|
||||
################
|
||||
em_abstract = em.new_class(
|
||||
'abstract_object',
|
||||
display_name='Abstract lodel object',
|
||||
help_text = 'For testing purpose',
|
||||
group=base_group,
|
||||
abstract=True)
|
||||
em_object = em.new_class(
|
||||
'object',
|
||||
display_name='Object',
|
||||
help_text='Main class for all Em objects',
|
||||
group=base_group,
|
||||
abstract=True,
|
||||
parents=em_abstract,)
|
||||
em_object.new_field(
|
||||
'lodel_id',
|
||||
display_name='Lodel identifier',
|
||||
help_text='Uniq ID that identify every lodel object',
|
||||
group=base_group,
|
||||
data_handler='uniqid',
|
||||
internal=True,)
|
||||
em_object.new_field(
|
||||
'help_text',
|
||||
display_name='Help',
|
||||
help_text='A short text that describe the object',
|
||||
group=base_group,
|
||||
internal=True,
|
||||
data_handler='text',)
|
||||
em_object.new_field(
|
||||
'date_create',
|
||||
display_name='Creation date',
|
||||
group=base_group,
|
||||
data_handler='datetime',
|
||||
now_on_create=True,
|
||||
internal=True,)
|
||||
em_object.new_field(
|
||||
'date_update',
|
||||
display_name='Last update',
|
||||
group=base_group,
|
||||
data_handler='datetime',
|
||||
now_on_update=True,
|
||||
internal=True,)
|
||||
|
||||
########################
|
||||
# Lodel old classtypes #
|
||||
########################
|
||||
entitie = em.new_class(
|
||||
'entitie',
|
||||
display_name='entitie',
|
||||
help_text='Replace old entity classtype',
|
||||
abstract=True,
|
||||
group=base_group,
|
||||
parents=em_object,)
|
||||
person = em.new_class(
|
||||
'person',
|
||||
display_name='Person',
|
||||
help_text='Replace old person classtype',
|
||||
abstract=False,
|
||||
group=base_group,
|
||||
parents=em_object,)
|
||||
person.new_field(
|
||||
'firstname',
|
||||
display_name = {
|
||||
'eng': 'Firstname',
|
||||
'fre': 'Prénom',
|
||||
},
|
||||
data_handler = 'varchar',
|
||||
group = base_group,)
|
||||
person.new_field(
|
||||
'lastname',
|
||||
display_name = {
|
||||
'eng': 'Lastname',
|
||||
'fre': 'Nom de famille',
|
||||
},
|
||||
data_handler = 'varchar',
|
||||
group = base_group,)
|
||||
person.new_field(
|
||||
'fullname',
|
||||
display_name = {
|
||||
'eng': 'Fullname',
|
||||
'fre': 'Nom complet',
|
||||
},
|
||||
group = base_group,
|
||||
data_handler = 'Concat',
|
||||
field_list = ['firstname', 'lastname'],
|
||||
immutable = True,)
|
||||
person.new_field(
|
||||
'alias',
|
||||
display_name = 'alias',
|
||||
help_text = {
|
||||
'eng': 'Link to other person class instance that represent the same person',
|
||||
'fre': 'Lien vers un ensemble d\'instances de la classe personne représentant le même individu',
|
||||
},
|
||||
data_handler = 'set',
|
||||
allowed_classes = [person],
|
||||
default = None,
|
||||
nullable = True,
|
||||
group = base_group,)
|
||||
entry = em.new_class(
|
||||
'entry',
|
||||
display_name = 'Entry',
|
||||
help_text = 'Replace olf entry classtype',
|
||||
abstract = True,
|
||||
group = base_group,
|
||||
parents = em_object,)
|
||||
|
||||
#####################
|
||||
# Editorial classes #
|
||||
#####################
|
||||
editorial_group = em.new_group(
|
||||
'editorial_abstract',
|
||||
display_name = 'Editorial base',
|
||||
help_text = {
|
||||
'eng': 'Contains abstract class to handler editorial contents',
|
||||
'fre': 'Contient les classes abstraites permetant la gestion de contenu éditorial'
|
||||
},
|
||||
depends = (base_group,))
|
||||
|
||||
# Classe texte
|
||||
text = em.new_class(
|
||||
'text',
|
||||
display_name = 'Text',
|
||||
help_text = 'Abstract class that represent texts',
|
||||
group = editorial_group,
|
||||
abstract = True,
|
||||
parents = entitie,)
|
||||
text.new_field(
|
||||
'title',
|
||||
display_name = {'eng': 'Title', 'fre': 'Titre'},
|
||||
group = editorial_group,
|
||||
data_handler = 'varchar',
|
||||
nullable = True,)
|
||||
text.new_field(
|
||||
'subtitle',
|
||||
display_name = { 'eng': 'Subtitle', 'fre': 'Sous-titre',},
|
||||
group = editorial_group,
|
||||
data_handler = 'varchar',
|
||||
nullable = True,
|
||||
default = None)
|
||||
|
||||
# Classe collection
|
||||
collection = em.new_class(
|
||||
'collection',
|
||||
display_name = 'Collection',
|
||||
group = editorial_group,
|
||||
abstract = False,
|
||||
parents = entitie)
|
||||
collection.new_field(
|
||||
'title',
|
||||
display_name = 'Title',
|
||||
group = editorial_group,
|
||||
data_handler = 'varchar')
|
||||
|
||||
# Classe publication
|
||||
publication = em.new_class( 'publication',
|
||||
display_name = 'Publication',
|
||||
group = editorial_group,
|
||||
abstract = False,
|
||||
parents = entitie,)
|
||||
publication.new_field( 'collection',
|
||||
display_name = 'Collection',
|
||||
group = editorial_group,
|
||||
data_handler = 'link',
|
||||
default = None,
|
||||
nullable = True,
|
||||
allowed_classes = [collection],
|
||||
back_reference = ('collection', 'publications'))
|
||||
collection.new_field( 'publications',
|
||||
display_name = 'Publications',
|
||||
group = editorial_group,
|
||||
data_handler = 'list',
|
||||
allowed_classes = [publication],
|
||||
back_reference = ('publication', 'collection'))
|
||||
|
||||
#########################
|
||||
# Texte definition #
|
||||
#########################
|
||||
|
||||
section = em.new_class('section',
|
||||
display_name = 'Section',
|
||||
group = editorial_group,
|
||||
abstract = False,
|
||||
parents = text)
|
||||
subsection = em.new_class( 'subsection',
|
||||
display_name = 'Subsection',
|
||||
group = editorial_group,
|
||||
abstract = False,
|
||||
parents = section)
|
||||
section.new_field( 'childs',
|
||||
display_name = 'Next section',
|
||||
group = editorial_group,
|
||||
data_handler = 'hierarch',
|
||||
allowed_classes = [subsection],
|
||||
back_reference = ('subsection', 'parent'),
|
||||
default = None,
|
||||
nullable = True)
|
||||
subsection.new_field( 'parent',
|
||||
display_name = 'Parent',
|
||||
group = editorial_group,
|
||||
data_handler = 'link',
|
||||
default = None,
|
||||
nullable = True,
|
||||
allowed_classes = [section],
|
||||
back_reference = ('section', 'childs'))
|
||||
|
||||
#####################
|
||||
# Persons & authors #
|
||||
#####################
|
||||
editorial_person_group = em.new_group( 'editorial_person',
|
||||
display_name = 'Editorial person',
|
||||
help_text = {
|
||||
'eng': 'Introduce the concept of editorial person (authors, translator etc)',
|
||||
'fre': 'Contient les classes servant à la gestion des personnes editorials (auteurs, traducteur...)',
|
||||
},
|
||||
depends = (editorial_group,))
|
||||
text_person = em.new_class( 'text_person',
|
||||
display_name = {
|
||||
'eng': 'TextPerson',
|
||||
'fre': 'TextePersonne',
|
||||
},
|
||||
help_text = {
|
||||
'eng': 'Represent a link between someone and a text',
|
||||
'fre': 'Représente un lien entre une personne et un texte',
|
||||
},
|
||||
group = editorial_person_group,
|
||||
abstract = True,
|
||||
parents = entitie,)
|
||||
bref_textperson_text = text_person.new_field( 'text',
|
||||
display_name = {
|
||||
'eng': 'Linked text',
|
||||
'fre': 'Texte lié',
|
||||
},
|
||||
data_handler = 'link',
|
||||
allowed_classes = [text],
|
||||
group = editorial_person_group)
|
||||
bref_textperson_person = text_person.new_field( 'person',
|
||||
display_name = {
|
||||
'eng': 'Linked person',
|
||||
'fre': 'Personne liée',
|
||||
},
|
||||
data_handler = 'link',
|
||||
allowed_classes = [person],
|
||||
group = editorial_person_group,)
|
||||
text_person.new_field( 'role',
|
||||
display_name = {
|
||||
'eng': 'Person role',
|
||||
'fre': 'Role de la personne',
|
||||
},
|
||||
data_handler = 'varchar',
|
||||
group = editorial_person_group)
|
||||
|
||||
# simple example of linked text / person
|
||||
person.new_field( 'linked_texts',
|
||||
display_name = {
|
||||
'eng': 'Linked texts',
|
||||
'fre': 'Textes liés',
|
||||
},
|
||||
data_handler = 'list',
|
||||
back_reference = ('Text', 'linked_persons'),
|
||||
group = editorial_person_group,
|
||||
allowed_classes = [text],
|
||||
default = None,
|
||||
nullable = True)
|
||||
|
||||
text.new_field( 'linked_persons',
|
||||
display_name = {
|
||||
'eng': 'Linked persons',
|
||||
'fre': 'Personnes liées',
|
||||
},
|
||||
data_handler = 'list',
|
||||
back_reference = ('Person', 'linked_texts'),
|
||||
group = editorial_person_group,
|
||||
allowed_classes = [person],
|
||||
default = None,
|
||||
nullable = True)
|
||||
|
||||
#####################
|
||||
# Index classes # <--- Note : using a different datasource for testing
|
||||
##################### purpose
|
||||
|
||||
index_group = em.new_group( 'index_group',
|
||||
display_name = 'Indexes',
|
||||
help_text = {
|
||||
'eng': 'EM class that represents indexes'},
|
||||
depends = (editorial_group,))
|
||||
|
||||
index_abstract = em.new_class(
|
||||
'indexAbs',
|
||||
display_name = {'eng': 'Abstract Index'},
|
||||
help_text = {'eng': 'Abstract class common to each Index classes'},
|
||||
abstract = True,
|
||||
group = index_group,
|
||||
datasources = 'dummy2',
|
||||
parents = em_object)
|
||||
|
||||
index_name = index_abstract.new_field(
|
||||
'name',
|
||||
display_name = {
|
||||
'eng': 'name',
|
||||
'fre': 'nom'},
|
||||
data_handler = 'varchar',
|
||||
group = index_group)
|
||||
|
||||
index_value = index_abstract.new_field(
|
||||
'value',
|
||||
display_name = {
|
||||
'eng': 'value',
|
||||
'fre': 'valeur'},
|
||||
data_handler = 'varchar',
|
||||
group = index_group)
|
||||
|
||||
text.new_field( 'indexes',
|
||||
display_name = {'eng': 'Indexes', 'fre': 'Indexes'},
|
||||
data_handler = 'list',
|
||||
back_reference = ('Indexabs', 'texts'),
|
||||
allowed_classes = [index_abstract],
|
||||
default = None,
|
||||
nullable = True,
|
||||
group = index_group)
|
||||
|
||||
index_abstract.new_field( 'texts',
|
||||
display_name = {
|
||||
'eng': 'Text referenced by this index',
|
||||
'fre': 'Texte contenant cette index'},
|
||||
data_handler = 'list',
|
||||
back_reference = ('Text', 'indexes'),
|
||||
allowed_classes = [text],
|
||||
group = index_group)
|
||||
|
||||
index_theme = em.new_class(
|
||||
'indexTheme',
|
||||
display_name = {
|
||||
'eng': 'Thematic index',
|
||||
'fre': 'Index thématique'},
|
||||
group = index_group,
|
||||
datasources = 'dummy2',
|
||||
parents = index_abstract)
|
||||
|
||||
index_theme_theme = index_abstract.new_field(
|
||||
'theme',
|
||||
display_name = {
|
||||
'eng': 'theme'},
|
||||
data_handler = 'varchar',
|
||||
group = index_group)
|
||||
|
||||
#############
|
||||
# USERS #
|
||||
#############
|
||||
|
||||
user_group = em.new_group(
|
||||
'users', display_name = 'Lodel users',
|
||||
help_text = 'Group that handle users en perm')
|
||||
|
||||
user = em.new_class(
|
||||
'user', display_name = 'Lodel user', help_text = 'Represent a lodel user',
|
||||
group = user_group, abstract = False)
|
||||
|
||||
user.new_field(
|
||||
'id', display_name = 'user identifier', help_text = 'Uniq ID',
|
||||
group = user_group, data_handler = 'uniqid', internal = True)
|
||||
|
||||
user.new_field(
|
||||
'firstname', display_name = 'Firstname',
|
||||
group = user_group, data_handler = 'varchar', internal = False)
|
||||
|
||||
user.new_field(
|
||||
'lastname', display_name = 'Lastname',
|
||||
group = user_group, data_handler = 'varchar', internal = False)
|
||||
|
||||
user.new_field(
|
||||
'login', display_name = 'user login', help_text = 'login',
|
||||
group = user_group, data_handler = 'varchar', uniq = True, internal = False)
|
||||
|
||||
user.new_field(
|
||||
'password', display_name = 'Password',
|
||||
group = user_group, data_handler = 'password', internal = False)
|
||||
|
||||
|
||||
#em.save('xmlfile', filename = 'examples/em_test.xml')
|
||||
pickle_file = 'examples/em_test.pickle'
|
||||
em.save('picklefile', filename = pickle_file)
|
||||
print("Output written in %s" % pickle_file)
|
||||
|
||||
|
|
@ -2,7 +2,7 @@ from flask_script import Command, Option
|
|||
|
||||
from management.utils import generate_dyncode
|
||||
|
||||
class LodelCommand(Command):
|
||||
class GenerateDyncode(Command):
|
||||
|
||||
option_list = (
|
||||
Option('--model', '-m', dest='model_file'),
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
from flask_script import Command, Option
|
||||
from lodel.management.utils import generate_dyncode
|
||||
from management.utils import generate_dyncode
|
||||
|
||||
class LodelCommand(Command):
|
||||
class RefreshDyncode(Command):
|
||||
|
||||
option_list = (
|
||||
Option('--model', '-m', dest='model_file'),
|
||||
|
|
@ -16,7 +16,7 @@ class LodelCommand(Command):
|
|||
def run(self, model_file, translator, output_filename):
|
||||
dyncode = generate_dyncode(model_file, translator)
|
||||
with open(output_filename, 'w+') as out_fd:
|
||||
out_fd.write(dyncode)
|
||||
out_fd.write(dyncode)
|
||||
out_fd.close()
|
||||
print("The dynamic code %s has been updated to %s" % (model_file, output_filename))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue