hi,
also die anzeige konnte ich ein bisschen anpassen aber na ja!
Ich hab schon wieder 2 Probleme.
1. Die Seite die ich mit Archetypes erstellt bzw. abgeändert habe, ist ja so aufgebaut, dass meine Mitarbeiter Auswahl untereinander steht (Mitarbeiter 1-5 die jeweils ein Dropdown Feld sind und wie gesagt untereinander stehen). Jetzt soll ich daneben noch ein Feld machen (neben jeden Mitarbeiter) wo ich eintragen kann zu wieviel Prozent er an dem Projekt beteiligt ist. Nur wie bekomme ich Felder mit Archtypes nebeneinander ?
2. Natürlich kann ein Mitarbeiter nicht mehr als 100 % oder nicht weniger als 0% in einem Projekt arbeiten.
Das ist mein Versuch:
Code: Alles auswählen
class neuesProjekt(BaseContent):
"""Projekt"""
portal_type = "neuesProjekt"
meta_type = "neuesProjekt"
archetype_name = "neuesProjekt"
schema = BaseContent.schema.copy() + Schema(
(
StringField(
'projektAll',
default = "1",
widget = TextAreaWidget( label="ProjektAll",
visible = { 'edit' :'hidden', 'view' : 'invisible' }),
),
StringField(
"member1",
searchable = 1,
required = True,
vocabulary = "get_members",
enforceVocabulary = True,
index = "KeywordIndex", # erstellt autom. einen Index mit diesem Feld
widget = SelectionWidget(
label = "1. Mitarbeiter",
description = "Erster Mitarbeiter",
format = "select",
),
),
IntegerField(
"partOfMember1",
required = True,
searchable = False,
widget = IntegerWidget(
label = "Projektbeteiligung des 1. Mitarbeiters",
description = (
"Geben Sie hier die Projektbeteilung des Mitgliedes in % ein."
),
size = 10,
),
),
#StringField(
# "group",
# vocabulary=ARTICLE_GROUPS,
# widget=SelectionWidget(),
# ),
StringField(
"shortDescription",
searchable=1,
widget=TextAreaWidget(
label = "Kurz Beschreibung des Projektes"),
),
TextField(
"projectContent",
searchable=1,
required=1,
primary=1,
default_output_type='text/html',
allowable_content_types=('text/plain',
'text/structured',
'text/restructured',
'text/html',
'application/msword'),
widget=RichWidget(label='Projektinhalt'),
),
),
marshall=PrimaryFieldMarshaller(),
)
def get_members(self):
ms = self.portal_membership
retlist = []
retlist.append("")
members = ms.searchForMembers()
if members:
for member in members:
retlist.append(
(
member.getUserName()
)
)
return retlist
def validate_partOfMember1(self, new_value):
"""
Testet ob die Projektbeteiligung korrekt eigegeben wurde. (=Validator)
"""
#new_value = int(new_value)
if (new_value < 100 and new_value > 0):
return None
return "Die Projektbeteiligung darf nicht geringer als 0 und nicht hößher als 100 Prozent sein."+new_value
# Klasse registrieren
registerType(neuesProjekt, PROJECTNAME)
Mal am beispiel von nur dem ersten Mitarbeiter...hier ist es so, dass das integer Feld drunter steht...
Und bei der Valedierungsmethode, ist es glaube so das die Zahl als String umgewandelt wird und ich sie deshalb nicht mit der "If- Anweisung" auswerten kann!
mfg mitch..