template vorlage für "dokument"

Django, Flask, Bottle, WSGI, CGI…
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi mitch!

Ich habe mich da mal ein wenig gespielt:

http://gelb.bcom.at/trac/misc/browser/A ... ins/ATTest

Es geht wahrscheinlich auch einfacher, aber die einfache Lösung fällt mir im Moment nicht ein. Probier es einfach mal aus...

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
mitch
User
Beiträge: 78
Registriert: Dienstag 1. August 2006, 09:07
Kontaktdaten:

hi gerold,

danke für das Script.
Ich habe auch mal eine Lösung erschaffen, die ist etwas unsauber aber na ja schau selbst.
Der untere Teil ist zu beachten, da spielt sich im Prinzip alles ab.
Es ist halt ohne script gelöst. Ich werde deine Lösung allerdings mal probieren, weil die etwas eleganter aussieht!

Code: Alles auswählen

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
      lang="en"
      metal:use-macro="here/main_template/macros/master"
      i18n:domain="plone">

<metal:block fill-slot="top_slot"
             tal:define="dummy python:request.set('disable_border',1)" />
<body>

<div metal:fill-slot="main"
       tal:define="is_manager python: checkPermission('Manage portal', here);
                   results python:mtool.searchForMembers(request);
                   projectName python:request.get('projektbeteiligungen');
                   Batch python:modules['Products.CMFPlone'].Batch;
                   DateTime python:modules['DateTime'].DateTime;
                   b_size python:12;b_start python:0;b_start request/b_start | b_start;">

    <h1 i18n:translate="heading_search_results">Search results</h1>
<!--<div tal:content="request"></div>
<div tal:content="projectName"></div>-->
 
 <div tal:condition="python: 'Kein Projekt' in projectName">
     <div tal:condition="results"
          tal:define="batch python:Batch(results, b_size, int(b_start), orphan=1)">

        <strong i18n:translate="batch_x_items_matching_your_criteria">
            <span i18n:name="number" tal:omit-tag="" tal:content="python:len(results)">234</span> items matching your criteria.
        </strong>

        <!-- Navigation -->
        <div metal:use-macro="here/batch_macros/macros/navigation" />

        <div>
        <metal:block tal:repeat="result batch">
            <div class="card" tal:define="name result/getUserName;
                                           home python:container.portal_membership.getHomeUrl(name, verifyPermission=1);
                                           portrait python: here.portal_membership.getPersonalPortrait(name);
                                           settings string:prefs_user_details?userid=;
                                           settings python:settings + name">
                
                  <a href="#" tal:attributes="href home">
                    <img src="defaultUser.gif"
                         alt=""
                         border="0"
                         width="75"
                         height="100"
                         tal:attributes="src portrait/absolute_url" />
                    <br />
                    <span tal:content="name">user id</span>
                </a>
                <br />
               <a href="#" tal:attributes="href settings">
                   <span>Persönliche Einstellungen</span>
                </a>
                <br />
            </div>
        </metal:block>
        </div>

        <!-- Navigation -->
        <div class="visualClear"><!-- --></div>

        <div metal:use-macro="here/batch_macros/macros/navigation" />

        <div class="visualClear"><!-- --></div>

    </div>

    <div tal:condition="not: results">
        <p><strong i18n:translate="description_no_results_found">No results were found.</strong></p>
    </div>

    </div>

	<div tal:define="projects python:context.get_member(project= projectName);
					 project projects;">

			<tal:block tal:repeat="project projects">
				<tal:block tal:define="project_object project/getObject;
										name1 project_object/getMember1;
										name2 project_object/getMember2;
										name3 project_object/getMember3;
										name4 project_object/getMember4;
										name5 project_object/getMember5;">
			<!--<h1 tal:content="test3"></h1>-->
					<tal:block tal:repeat="name python: name1,name2,name3,name4,name5">
						<tal:block tal:condition="python: '' is not name">
							<div class="card" tal:define="home python:container.portal_membership.getHomeUrl(name, verifyPermission=1);
												portrait python: here.portal_membership.getPersonalPortrait(name);
												settings string:prefs_user_details?userid=;
												settings python:settings + name;">
						
								<a href="#" tal:attributes="href home">
									<img src="defaultUser.gif"
										alt=""
										border="0"
										width="75"
										height="100"
										tal:attributes="src portrait/absolute_url" />
									<br />
									<span tal:content="name">user id</span>
								</a>
								<br />
								<a href="#" tal:attributes="href settings">
									<span>Persönliche Einstellungen</span>
								</a>
								<br />
							</div>
						</tal:block>
					</tal:block>
				</tal:block>
			</tal:block>
	</div>
</div>
</body>
</html>
Benutzeravatar
mitch
User
Beiträge: 78
Registriert: Dienstag 1. August 2006, 09:07
Kontaktdaten:

Hi,

kannst du mir erklären, was hier:

Code: Alles auswählen

searchparams = searchparams or context.REQUEST 
mtool = context.portal_membership 
catalog = context.portal_catalog 
  
# Suche nach Member 
found_members = mtool.searchForMembers(searchparams) 
if found_members: 
    projectmembership = searchparams.get("projektbeteiligungen", None) 
    if projectmembership == "Kein Projekt": 
        return found_members 
    else: 
        membernames = [ member.getUserName() for member in found_members ] 
        ret_list = [] 
        project_brains = catalog({"Type": "Projekte", "path": "neuesprojekt.2006-10-30.2749270932"}) 
        for project_brain in project_brains: 
            project = project_brain.getObject() 
            projectmembers = [  
                item for item in ( 
                    project.getMember1(), project.getMember2(), project.getMember3(),project.getMember4(),project.getMember5() 
                ) if item  
            ] 
            for index, membername in enumerate(membernames): 
                if membername in projectmembers: 
                    ret_list.append(found_members[index]) 
            return ret_list 
else: 
    return []
bei der Zeile project_brains = catalog... passiert ? Was muss ich da für werte eintragen bei "Member5" ?

mfg mitch
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

mitch hat geschrieben:kannst du mir erklären, was hier: bei der Zeile project_brains = catalog... passiert?
Hi mitch!

Das ist ein Überbleibsel. Vorher hatte ich nach "Titel" gesucht. Jetzt, da ich den "Pfad" verwende, ist die Suche komplett für die Katz.

Ich werde das mal im SVN-Repository ändern und mich dann noch mal hier melden.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo mitch!

Ich habe das Beispiel ausgebessert.

http://gps.gp:8580/TESTORDNER/archetype ... earch_form

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
mitch
User
Beiträge: 78
Registriert: Dienstag 1. August 2006, 09:07
Kontaktdaten:

Hi gerold,

also ich versuch mal durch deine Methode durch zusteigen.

Code: Alles auswählen

'--> also hier werden die request Werte in searchparams geschrieben, danach einige Pfade in Variablen gespeichert'
searchparams = searchparams or context.REQUEST 
mtool = context.portal_membership 
catalog = context.portal_catalog 
# Suche nach Member 
'--> es wird nach Membern gesucht.. :P '
found_members = mtool.searchForMembers(searchparams) 
if found_members: 
   '--> hier schreibe ich den Wert aus dem Request von projektbeteiligungen in die Variable'
    projectmembership = searchparams.get("projektbeteiligungen", None) 
    # Info: 
    # ``projectmembership``: Pfad zum Projekt; aus dem Katalog entnommen und vom "Brain" 
    # per ``getPath()`` heraus geholt. 
    # Siehe: http://gelb.bcom.at/trac/misc/browser/ATTest/trunk/skins/ATTest/extended_member_search_form.pt?rev=47#L67 
     
    if projectmembership == 'Kein Projekt': 
        '--> fals in projectmembership "kein Projekt" steht, wird nach membern gesucht'
        return found_members 
    else: 
       '--> wenn nicht, dann soll ja nur nach den Mitgliedern von dem Projekt gesucht werden'
       '--> wenn z.B. nur ein Projekt ausgewählt wurde, dann werden ja alle Mitglieder gefunden und diese werden mit dem username in das Array membernames geschrieben '
        membernames = [ member.getUserName() for member in found_members ] 
       '--> Array ret_list wird erzeugt'
        ret_list = [] 
       '--> hier steh ich ein bisschen auf dem schlauch, wird hier der Pfad zu dem Projekt gespeichert ? '
        project = context.restrictedTraverse(projectmembership)
        '--> nun sollen von dem Object die einzelnen Mitglieder in projectmembers gespeichert werden aber was soll if item bedeuten ?'  
        projectmembers = [  
            item for item in ( 
                project.getMember1(), project.getMember2(), project.getMember3(), project.getMember4(), project.getMember5() 
            ) if item  
        ] 
        '--> was ist enumerate?' 
        '--> wird hier das ergebniss der normalen member suche und der member des gesuchten projektes verglichen ?'
        '--> wenn eine übereinstimmung statt gefunden hat, wird der index des members in ret_list gespeichert ?!' 
        '--> was soll der index da sein ?'
        for index, membername in enumerate(membernames): 
            if membername in projectmembers: 
                ret_list.append(found_members[index]) 
        return ret_list 
else: 
    return []
Wenn ich angeben bei der Suche "Kein Projekt" funktioniert die Suche einwandfrei. Sobald ich aber ein Projekt suche z.B. "neues Projekt" dann steht da ... Fehlerwert --> "neues Projekt"
Kannst du mir da weiter Helfen und mich ein bisschen über die Methode aufklären?! Was hab ich daran falsch gedeutet ?

mfg mitch
Zuletzt geändert von mitch am Montag 6. November 2006, 12:22, insgesamt 1-mal geändert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

...ich Trottel :lol:

Das ist der falsche URL.

Hier ist der URL zum richtigen Projekt: http://gelb.bcom.at/trac/misc/browser/A ... ins/ATTest

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
mitch
User
Beiträge: 78
Registriert: Dienstag 1. August 2006, 09:07
Kontaktdaten:

Kein Problem... das hab ich gemerkt aber ich hab ja die Seite noch gehabt und mir da die Aktuelle Methode geholt.

Wie du sehen kannst hab ich ja eine Post über dir die Methode mal versucht auseinander zu nehmen und zu durchleuchten.
Kannst du mir sagen wo ich richtig lag oder wo ich falsch gedacht habe ?
Weils ja wie gesagt bei mir noch nicht funktioniert! :P Normal halt.. :D

mfg mitch
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi!

Dieser Thread verträgt keine zusätzlichen Beiträge mit Code mehr.

Deshalb setze ich diesen Thread hier fort:
http://www.python-forum.de/post-48312.html#48312

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Gesperrt