diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2012-03-15 11:49:28 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2012-03-15 11:49:28 (GMT) |
commit | a34e339bc2ec16734371a3924fb2f71501cf8b45 (patch) | |
tree | c428df9dee912fe49ad4cb631f60f6b2147616fa | |
parent | 1ca7f7dc59462945abe313a91aca7a03228db618 (diff) |
Initial ASLO mirroring script implementation; tune objects model to handle activities
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | TODO | 3 | ||||
-rw-r--r-- | doc/objects.dia | 442 | ||||
-rwxr-xr-x | misc/aslo_sync.py | 234 | ||||
-rw-r--r-- | sugar_network_server/__init__.py | 2 | ||||
-rw-r--r-- | sugar_network_server/env.py | 7 | ||||
-rw-r--r-- | sugar_network_server/resources/artifact.py | 13 | ||||
-rw-r--r-- | sugar_network_server/resources/context.py | 25 | ||||
-rw-r--r-- | sugar_network_server/resources/idea.py | 2 | ||||
-rw-r--r-- | sugar_network_server/resources/implementation.py (renamed from sugar_network_server/resources/version.py) | 26 | ||||
-rw-r--r-- | sugar_network_server/resources/problem.py | 2 | ||||
-rw-r--r-- | sugar_network_server/resources/question.py | 2 | ||||
-rw-r--r-- | sugar_network_server/resources/report.py | 4 | ||||
-rw-r--r-- | sugar_network_server/resources/review.py | 2 | ||||
-rw-r--r-- | sugar_network_server/resources/solution.py | 4 |
15 files changed, 584 insertions, 185 deletions
@@ -6,3 +6,4 @@ restful_document sugar_stats_server tmp doc/objects.png +sugar_network @@ -19,6 +19,9 @@ - initial cloud storage approach: bookmarks and votes - name service to bind guids to names - link sweets and SN names +- improve security by using session token, generated on server, + that should be signed on client and passed via sugar_user_signature + HTTP header 1.0+ ==== diff --git a/doc/objects.dia b/doc/objects.dia index 98ae33e..f8e1168 100644 --- a/doc/objects.dia +++ b/doc/objects.dia @@ -90,16 +90,16 @@ <dia:point val="30,25"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="29.985,24.985;48.415,47.815"/> + <dia:rectangle val="29.985,24.985;48.6675,51.015"/> </dia:attribute> <dia:attribute name="elem_corner"> <dia:point val="30,25"/> </dia:attribute> <dia:attribute name="elem_width"> - <dia:real val="18.399999999999999"/> + <dia:real val="18.6525"/> </dia:attribute> <dia:attribute name="elem_height"> - <dia:real val="22.800000000000001"/> + <dia:real val="26"/> </dia:attribute> <dia:attribute name="name"> <dia:string>#Context#</dia:string> @@ -272,7 +272,7 @@ <dia:string>##</dia:string> </dia:attribute> <dia:attribute name="comment"> - <dia:string>#One line summary#</dia:string> + <dia:string>#Context name in free form#</dia:string> </dia:attribute> <dia:attribute name="visibility"> <dia:enum val="0"/> @@ -286,16 +286,16 @@ </dia:composite> <dia:composite type="umlattribute"> <dia:attribute name="name"> - <dia:string>#description#</dia:string> + <dia:string>#summary#</dia:string> </dia:attribute> <dia:attribute name="type"> - <dia:string>#wikitext [R WA F]#</dia:string> + <dia:string>#str [R WA S F]#</dia:string> </dia:attribute> <dia:attribute name="value"> <dia:string>##</dia:string> </dia:attribute> <dia:attribute name="comment"> - <dia:string>#Multilined long description#</dia:string> + <dia:string>#One line short description#</dia:string> </dia:attribute> <dia:attribute name="visibility"> <dia:enum val="0"/> @@ -309,16 +309,16 @@ </dia:composite> <dia:composite type="umlattribute"> <dia:attribute name="name"> - <dia:string>#license#</dia:string> + <dia:string>#description#</dia:string> </dia:attribute> <dia:attribute name="type"> - <dia:string>#[enum] [R WA]#</dia:string> + <dia:string>#wikitext [R WA F]#</dia:string> </dia:attribute> <dia:attribute name="value"> <dia:string>##</dia:string> </dia:attribute> <dia:attribute name="comment"> - <dia:string>#List of licenses that the entire Context provides (particular Context resources might be licensed differently); see Wiki for details#</dia:string> + <dia:string>#Multilined long description#</dia:string> </dia:attribute> <dia:attribute name="visibility"> <dia:enum val="0"/> @@ -355,6 +355,52 @@ </dia:composite> <dia:composite type="umlattribute"> <dia:attribute name="name"> + <dia:string>#icon#</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#blob [R WA]#</dia:string> + </dia:attribute> + <dia:attribute name="value"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>#Icon, in PNG or SVG format, to represent the Context#</dia:string> + </dia:attribute> + <dia:attribute name="visibility"> + <dia:enum val="0"/> + </dia:attribute> + <dia:attribute name="abstract"> + <dia:boolean val="false"/> + </dia:attribute> + <dia:attribute name="class_scope"> + <dia:boolean val="false"/> + </dia:attribute> + </dia:composite> + <dia:composite type="umlattribute"> + <dia:attribute name="name"> + <dia:string>#artifact_icon#</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#blob [R WA]#</dia:string> + </dia:attribute> + <dia:attribute name="value"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>#Icon, in SVG format, to represent the Context's Artifacts; icon should conform rules for Sugar icons#</dia:string> + </dia:attribute> + <dia:attribute name="visibility"> + <dia:enum val="0"/> + </dia:attribute> + <dia:attribute name="abstract"> + <dia:boolean val="false"/> + </dia:attribute> + <dia:attribute name="class_scope"> + <dia:boolean val="false"/> + </dia:attribute> + </dia:composite> + <dia:composite type="umlattribute"> + <dia:attribute name="name"> <dia:string>#rating#</dia:string> </dia:attribute> <dia:attribute name="type"> @@ -960,7 +1006,7 @@ <dia:string>#[]#</dia:string> </dia:attribute> <dia:attribute name="comment"> - <dia:string>#List of layers this object belongs to; see the Wiki#</dia:string> + <dia:string>#List of layers this object belongs to; see the Wiki for details#</dia:string> </dia:attribute> <dia:attribute name="visibility"> <dia:enum val="0"/> @@ -1004,17 +1050,17 @@ </dia:object> <dia:object type="UML - Association" version="2" id="O3"> <dia:attribute name="obj_pos"> - <dia:point val="48.4144,36.4"/> + <dia:point val="48.6676,38"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="48.3968,35.64;53.0176,54.84"/> + <dia:rectangle val="48.65,37.24;53.0176,54.84"/> </dia:attribute> <dia:attribute name="meta"> <dia:composite type="dict"/> </dia:attribute> <dia:attribute name="orth_points"> - <dia:point val="48.4144,36.4"/> - <dia:point val="51,36.4"/> + <dia:point val="48.6676,38"/> + <dia:point val="51,38"/> <dia:point val="51,54"/> <dia:point val="53,54"/> </dia:attribute> @@ -1078,22 +1124,22 @@ <dia:color val="#000000ff"/> </dia:attribute> <dia:connections> - <dia:connection handle="0" to="O0" connection="26"/> + <dia:connection handle="0" to="O0" connection="30"/> </dia:connections> </dia:object> <dia:object type="UML - Association" version="2" id="O4"> <dia:attribute name="obj_pos"> - <dia:point val="53,60.5"/> + <dia:point val="53,59"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="46.9824,59.74;53.0176,68.34"/> + <dia:rectangle val="46.9824,58.24;53.0176,68.34"/> </dia:attribute> <dia:attribute name="meta"> <dia:composite type="dict"/> </dia:attribute> <dia:attribute name="orth_points"> - <dia:point val="53,60.5"/> - <dia:point val="51,60.5"/> + <dia:point val="53,59"/> + <dia:point val="51,59"/> <dia:point val="51,67.5"/> <dia:point val="47,67.5"/> </dia:attribute> @@ -1163,17 +1209,17 @@ </dia:object> <dia:object type="UML - Association" version="2" id="O5"> <dia:attribute name="obj_pos"> - <dia:point val="39.2,47.8"/> + <dia:point val="39.3263,51"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="39.1824,47.04;40.1,54.84"/> + <dia:rectangle val="39.3086,50.24;40.1,54.84"/> </dia:attribute> <dia:attribute name="meta"> <dia:composite type="dict"/> </dia:attribute> <dia:attribute name="orth_points"> - <dia:point val="39.2,47.8"/> - <dia:point val="40,47.8"/> + <dia:point val="39.3263,51"/> + <dia:point val="40,51"/> <dia:point val="40,54"/> <dia:point val="39.5,54"/> </dia:attribute> @@ -1552,7 +1598,7 @@ <dia:string>#context#</dia:string> </dia:attribute> <dia:attribute name="type"> - <dia:string>#Context [R WN S]#</dia:string> + <dia:string>#Context [R WN]#</dia:string> </dia:attribute> <dia:attribute name="value"> <dia:string>##</dia:string> @@ -1804,7 +1850,7 @@ <dia:string>#context#</dia:string> </dia:attribute> <dia:attribute name="type"> - <dia:string>#Context [R WN S]#</dia:string> + <dia:string>#Context [R WN]#</dia:string> </dia:attribute> <dia:attribute name="value"> <dia:string>##</dia:string> @@ -2033,7 +2079,7 @@ <dia:string>#context#</dia:string> </dia:attribute> <dia:attribute name="type"> - <dia:string>#Context [R WN S]#</dia:string> + <dia:string>#Context [R WN]#</dia:string> </dia:attribute> <dia:attribute name="value"> <dia:string>##</dia:string> @@ -2178,13 +2224,13 @@ <dia:point val="8,65"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="7.985,64.985;20.45,79.815"/> + <dia:rectangle val="7.985,64.985;19.7275,79.815"/> </dia:attribute> <dia:attribute name="elem_corner"> <dia:point val="8,65"/> </dia:attribute> <dia:attribute name="elem_width"> - <dia:real val="12.434999999999999"/> + <dia:real val="11.7125"/> </dia:attribute> <dia:attribute name="elem_height"> <dia:real val="14.800000000000001"/> @@ -2285,7 +2331,7 @@ <dia:string>#parent_resource#</dia:string> </dia:attribute> <dia:attribute name="type"> - <dia:string>#enum [R WN S]#</dia:string> + <dia:string>#enum [R WN]#</dia:string> </dia:attribute> <dia:attribute name="value"> <dia:string>##</dia:string> @@ -2407,7 +2453,7 @@ <dia:point val="19.6025,62.6"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="14.1999,62.5824;19.8025,65.8172"/> + <dia:rectangle val="13.8386,62.5824;19.8025,65.8172"/> </dia:attribute> <dia:attribute name="meta"> <dia:composite type="dict"/> @@ -2415,8 +2461,8 @@ <dia:attribute name="orth_points"> <dia:point val="19.6025,62.6"/> <dia:point val="19.6025,64"/> - <dia:point val="14.2175,64"/> - <dia:point val="14.2175,65.0172"/> + <dia:point val="13.8562,64"/> + <dia:point val="13.8562,65.0172"/> </dia:attribute> <dia:attribute name="orth_orient"> <dia:enum val="1"/> @@ -2487,7 +2533,7 @@ <dia:point val="6.71125,59.0144"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="6.69361,58.9968;14.4175,65.8173"/> + <dia:rectangle val="6.69361,58.9968;14.0563,65.8173"/> </dia:attribute> <dia:attribute name="meta"> <dia:composite type="dict"/> @@ -2495,8 +2541,8 @@ <dia:attribute name="orth_points"> <dia:point val="6.71125,59.0144"/> <dia:point val="6.71125,64"/> - <dia:point val="14.2175,64"/> - <dia:point val="14.2175,65.0172"/> + <dia:point val="13.8562,64"/> + <dia:point val="13.8562,65.0172"/> </dia:attribute> <dia:attribute name="orth_orient"> <dia:enum val="1"/> @@ -2567,7 +2613,7 @@ <dia:point val="0.205,60.1"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="0.187361,59.34;8.00324,73.24"/> + <dia:rectangle val="0.187361,59.34;8.01212,73.24"/> </dia:attribute> <dia:attribute name="meta"> <dia:composite type="dict"/> @@ -2576,7 +2622,7 @@ <dia:point val="0.205,60.1"/> <dia:point val="4,60.1"/> <dia:point val="4,72.4"/> - <dia:point val="7.9856,72.4"/> + <dia:point val="7.99448,72.4"/> </dia:attribute> <dia:attribute name="orth_orient"> <dia:enum val="0"/> @@ -2754,7 +2800,7 @@ <dia:string>#context#</dia:string> </dia:attribute> <dia:attribute name="type"> - <dia:string>#Context [R WN S]#</dia:string> + <dia:string>#Context [R WN]#</dia:string> </dia:attribute> <dia:attribute name="value"> <dia:string>##</dia:string> @@ -3260,22 +3306,22 @@ </dia:object> <dia:object type="UML - LargePackage" version="0" id="O20"> <dia:attribute name="obj_pos"> - <dia:point val="53,40"/> + <dia:point val="53,37"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="52.95,38.95;83.05,81.05"/> + <dia:rectangle val="52.95,35.95;84.05,81.05"/> </dia:attribute> <dia:attribute name="meta"> <dia:composite type="dict"/> </dia:attribute> <dia:attribute name="elem_corner"> - <dia:point val="53,40"/> + <dia:point val="53,37"/> </dia:attribute> <dia:attribute name="elem_width"> - <dia:real val="30"/> + <dia:real val="31"/> </dia:attribute> <dia:attribute name="elem_height"> - <dia:real val="41"/> + <dia:real val="44"/> </dia:attribute> <dia:attribute name="name"> <dia:string>#Context specific resources #</dia:string> @@ -3304,19 +3350,19 @@ </dia:object> <dia:object type="UML - Class" version="0" id="O21"> <dia:attribute name="obj_pos"> - <dia:point val="54,41"/> + <dia:point val="69,38"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="53.985,40.985;66.45,61.415"/> + <dia:rectangle val="68.985,37.985;81.45,63.215"/> </dia:attribute> <dia:attribute name="elem_corner"> - <dia:point val="54,41"/> + <dia:point val="69,38"/> </dia:attribute> <dia:attribute name="elem_width"> <dia:real val="12.434999999999999"/> </dia:attribute> <dia:attribute name="elem_height"> - <dia:real val="20.400000000000002"/> + <dia:real val="25.200000000000003"/> </dia:attribute> <dia:attribute name="name"> <dia:string>#Artifact#</dia:string> @@ -3325,7 +3371,7 @@ <dia:string>#Resource#</dia:string> </dia:attribute> <dia:attribute name="comment"> - <dia:string>#Artefacts created in the Context to share within the Network#</dia:string> + <dia:string>#Artefacts created within the Context#</dia:string> </dia:attribute> <dia:attribute name="abstract"> <dia:boolean val="false"/> @@ -3414,7 +3460,7 @@ <dia:string>#context#</dia:string> </dia:attribute> <dia:attribute name="type"> - <dia:string>#Context [R WN S]#</dia:string> + <dia:string>#Context [R WN]#</dia:string> </dia:attribute> <dia:attribute name="value"> <dia:string>##</dia:string> @@ -3434,6 +3480,29 @@ </dia:composite> <dia:composite type="umlattribute"> <dia:attribute name="name"> + <dia:string>#type#</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#enum [R WN]#</dia:string> + </dia:attribute> + <dia:attribute name="value"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>#Artifact's type; see the Wiki for details#</dia:string> + </dia:attribute> + <dia:attribute name="visibility"> + <dia:enum val="0"/> + </dia:attribute> + <dia:attribute name="abstract"> + <dia:boolean val="false"/> + </dia:attribute> + <dia:attribute name="class_scope"> + <dia:boolean val="false"/> + </dia:attribute> + </dia:composite> + <dia:composite type="umlattribute"> + <dia:attribute name="name"> <dia:string>#title#</dia:string> </dia:attribute> <dia:attribute name="type"> @@ -3480,16 +3549,39 @@ </dia:composite> <dia:composite type="umlattribute"> <dia:attribute name="name"> + <dia:string>#mime_type#</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#str [R WA S]#</dia:string> + </dia:attribute> + <dia:attribute name="value"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>#`data` MIME type#</dia:string> + </dia:attribute> + <dia:attribute name="visibility"> + <dia:enum val="0"/> + </dia:attribute> + <dia:attribute name="abstract"> + <dia:boolean val="false"/> + </dia:attribute> + <dia:attribute name="class_scope"> + <dia:boolean val="false"/> + </dia:attribute> + </dia:composite> + <dia:composite type="umlattribute"> + <dia:attribute name="name"> <dia:string>#preview#</dia:string> </dia:attribute> <dia:attribute name="type"> - <dia:string>#blob [R WA B]#</dia:string> + <dia:string>#blob [R WA]#</dia:string> </dia:attribute> <dia:attribute name="value"> <dia:string>##</dia:string> </dia:attribute> <dia:attribute name="comment"> - <dia:string>#PNG image to represent the Artifact#</dia:string> + <dia:string>#PNG image to represent the Artifact with fixed size#</dia:string> </dia:attribute> <dia:attribute name="visibility"> <dia:enum val="0"/> @@ -3506,7 +3598,7 @@ <dia:string>#data#</dia:string> </dia:attribute> <dia:attribute name="type"> - <dia:string>#blob [R WN B]#</dia:string> + <dia:string>#blob [R WN]#</dia:string> </dia:attribute> <dia:attribute name="value"> <dia:string>##</dia:string> @@ -3579,28 +3671,28 @@ </dia:object> <dia:object type="UML - Class" version="0" id="O22"> <dia:attribute name="obj_pos"> - <dia:point val="54,62"/> + <dia:point val="54,38"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="53.985,61.985;65.0825,80.415"/> + <dia:rectangle val="53.985,37.985;65.6275,68.015"/> </dia:attribute> <dia:attribute name="elem_corner"> - <dia:point val="54,62"/> + <dia:point val="54,38"/> </dia:attribute> <dia:attribute name="elem_width"> - <dia:real val="11.067499999999999"/> + <dia:real val="11.612500000000001"/> </dia:attribute> <dia:attribute name="elem_height"> - <dia:real val="18.400000000000002"/> + <dia:real val="30.000000000000007"/> </dia:attribute> <dia:attribute name="name"> - <dia:string>#Version#</dia:string> + <dia:string>#Implementation#</dia:string> </dia:attribute> <dia:attribute name="stereotype"> <dia:string>#Resource#</dia:string> </dia:attribute> <dia:attribute name="comment"> - <dia:string>#Software versions in Context#</dia:string> + <dia:string>#Implementation of the Context, e.g., Sugar activity bundle or .xol content#</dia:string> </dia:attribute> <dia:attribute name="abstract"> <dia:boolean val="false"/> @@ -3689,7 +3781,7 @@ <dia:string>#context#</dia:string> </dia:attribute> <dia:attribute name="type"> - <dia:string>#Context [R WN S]#</dia:string> + <dia:string>#Context [R WN]#</dia:string> </dia:attribute> <dia:attribute name="value"> <dia:string>##</dia:string> @@ -3709,6 +3801,29 @@ </dia:composite> <dia:composite type="umlattribute"> <dia:attribute name="name"> + <dia:string>#license#</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#[enum] [R WN]#</dia:string> + </dia:attribute> + <dia:attribute name="value"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>#List of licenses that the Implementation is covered by; see the Wiki for details#</dia:string> + </dia:attribute> + <dia:attribute name="visibility"> + <dia:enum val="0"/> + </dia:attribute> + <dia:attribute name="abstract"> + <dia:boolean val="false"/> + </dia:attribute> + <dia:attribute name="class_scope"> + <dia:boolean val="false"/> + </dia:attribute> + </dia:composite> + <dia:composite type="umlattribute"> + <dia:attribute name="name"> <dia:string>#version#</dia:string> </dia:attribute> <dia:attribute name="type"> @@ -3764,7 +3879,7 @@ <dia:string>##</dia:string> </dia:attribute> <dia:attribute name="comment"> - <dia:string>#Version stability level in Zero Install notation#</dia:string> + <dia:string>#Version stability level in Zero Install notation; see the Wiki for details#</dia:string> </dia:attribute> <dia:attribute name="visibility"> <dia:enum val="0"/> @@ -3801,16 +3916,62 @@ </dia:composite> <dia:composite type="umlattribute"> <dia:attribute name="name"> + <dia:string>#feed#</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#dict [R WN]#</dia:string> + </dia:attribute> + <dia:attribute name="value"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>#Zero Install Implementation parameters to add to feed#</dia:string> + </dia:attribute> + <dia:attribute name="visibility"> + <dia:enum val="0"/> + </dia:attribute> + <dia:attribute name="abstract"> + <dia:boolean val="false"/> + </dia:attribute> + <dia:attribute name="class_scope"> + <dia:boolean val="false"/> + </dia:attribute> + </dia:composite> + <dia:composite type="umlattribute"> + <dia:attribute name="name"> + <dia:string>#url#</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#str [R WN]#</dia:string> + </dia:attribute> + <dia:attribute name="value"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>#Web url to download Implemnetation's bundle#</dia:string> + </dia:attribute> + <dia:attribute name="visibility"> + <dia:enum val="0"/> + </dia:attribute> + <dia:attribute name="abstract"> + <dia:boolean val="false"/> + </dia:attribute> + <dia:attribute name="class_scope"> + <dia:boolean val="false"/> + </dia:attribute> + </dia:composite> + <dia:composite type="umlattribute"> + <dia:attribute name="name"> <dia:string>#bundle#</dia:string> </dia:attribute> <dia:attribute name="type"> - <dia:string>#blob [R WN B O]#</dia:string> + <dia:string>#blob [R WN]#</dia:string> </dia:attribute> <dia:attribute name="value"> <dia:string>##</dia:string> </dia:attribute> <dia:attribute name="comment"> - <dia:string>#Version's tarball; used only for off-line case#</dia:string> + <dia:string>#If `url` is empty, this property should contain bundle#</dia:string> </dia:attribute> <dia:attribute name="visibility"> <dia:enum val="0"/> @@ -3831,16 +3992,16 @@ </dia:object> <dia:object type="UML - Class" version="0" id="O23"> <dia:attribute name="obj_pos"> - <dia:point val="68,65"/> + <dia:point val="68,64"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="67.985,64.985;80.45,80.615"/> + <dia:rectangle val="67.985,63.985;83.145,79.615"/> </dia:attribute> <dia:attribute name="elem_corner"> - <dia:point val="68,65"/> + <dia:point val="68,64"/> </dia:attribute> <dia:attribute name="elem_width"> - <dia:real val="12.434999999999999"/> + <dia:real val="15.130000000000001"/> </dia:attribute> <dia:attribute name="elem_height"> <dia:real val="15.600000000000001"/> @@ -3852,7 +4013,7 @@ <dia:string>#Resource#</dia:string> </dia:attribute> <dia:attribute name="comment"> - <dia:string>#Semi-automatic Reports about issues with Version#</dia:string> + <dia:string>#Reports about issues with Implementations#</dia:string> </dia:attribute> <dia:attribute name="abstract"> <dia:boolean val="false"/> @@ -3938,10 +4099,10 @@ <dia:attribute name="attributes"> <dia:composite type="umlattribute"> <dia:attribute name="name"> - <dia:string>#version#</dia:string> + <dia:string>#implementation#</dia:string> </dia:attribute> <dia:attribute name="type"> - <dia:string>#Version [R WN S]#</dia:string> + <dia:string>#Implementation [R WN]#</dia:string> </dia:attribute> <dia:attribute name="value"> <dia:string>##</dia:string> @@ -4033,7 +4194,7 @@ <dia:string>#logs#</dia:string> </dia:attribute> <dia:attribute name="type"> - <dia:string>#blob [R WN B]#</dia:string> + <dia:string>#blob [R WN]#</dia:string> </dia:attribute> <dia:attribute name="value"> <dia:string>##</dia:string> @@ -4060,22 +4221,20 @@ </dia:object> <dia:object type="UML - Association" version="2" id="O24"> <dia:attribute name="obj_pos"> - <dia:point val="65.0675,70.3"/> + <dia:point val="59.8062,68"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="65.0499,68.54;68.0176,71.14"/> + <dia:rectangle val="59.7886,67.9824;68.0176,73.14"/> </dia:attribute> <dia:attribute name="meta"> <dia:composite type="dict"/> </dia:attribute> <dia:attribute name="orth_points"> - <dia:point val="65.0675,70.3"/> - <dia:point val="66.5337,70.3"/> - <dia:point val="66.5337,69.3"/> - <dia:point val="68,69.3"/> + <dia:point val="59.8062,68"/> + <dia:point val="59.8062,72.3"/> + <dia:point val="68,72.3"/> </dia:attribute> <dia:attribute name="orth_orient"> - <dia:enum val="0"/> <dia:enum val="1"/> <dia:enum val="0"/> </dia:attribute> @@ -4134,27 +4293,27 @@ <dia:color val="#000000ff"/> </dia:attribute> <dia:connections> - <dia:connection handle="0" to="O22" connection="13"/> - <dia:connection handle="1" to="O23" connection="8"/> + <dia:connection handle="0" to="O22" connection="6"/> + <dia:connection handle="1" to="O23" connection="12"/> </dia:connections> </dia:object> <dia:group> <dia:attribute name="matrix"/> <dia:object type="Standard - Box" version="0" id="O25"> <dia:attribute name="obj_pos"> - <dia:point val="61,11"/> + <dia:point val="62,13"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="60.9995,10.9995;83.0005,24.0005"/> + <dia:rectangle val="61.9995,12.9995;84.0005,24.0005"/> </dia:attribute> <dia:attribute name="elem_corner"> - <dia:point val="61,11"/> + <dia:point val="62,13"/> </dia:attribute> <dia:attribute name="elem_width"> <dia:real val="22"/> </dia:attribute> <dia:attribute name="elem_height"> - <dia:real val="13"/> + <dia:real val="11"/> </dia:attribute> <dia:attribute name="border_width"> <dia:real val="0.0010583332689479003"/> @@ -4171,43 +4330,10 @@ </dia:object> <dia:object type="Standard - Text" version="1" id="O26"> <dia:attribute name="obj_pos"> - <dia:point val="62,21.1586"/> + <dia:point val="63,14.3"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="62,20.5636;70.3025,21.3086"/> - </dia:attribute> - <dia:attribute name="text"> - <dia:composite type="text"> - <dia:attribute name="string"> - <dia:string>#[C] Calculated property#</dia:string> - </dia:attribute> - <dia:attribute name="font"> - <dia:font family="sans" style="0" name="Helvetica"/> - </dia:attribute> - <dia:attribute name="height"> - <dia:real val="0.80000000000000004"/> - </dia:attribute> - <dia:attribute name="pos"> - <dia:point val="62,21.1586"/> - </dia:attribute> - <dia:attribute name="color"> - <dia:color val="#000000ff"/> - </dia:attribute> - <dia:attribute name="alignment"> - <dia:enum val="0"/> - </dia:attribute> - </dia:composite> - </dia:attribute> - <dia:attribute name="valign"> - <dia:enum val="3"/> - </dia:attribute> - </dia:object> - <dia:object type="Standard - Text" version="1" id="O27"> - <dia:attribute name="obj_pos"> - <dia:point val="62,12.3"/> - </dia:attribute> - <dia:attribute name="obj_bb"> - <dia:rectangle val="62,11.705;70.67,12.45"/> + <dia:rectangle val="63,13.705;71.67,14.45"/> </dia:attribute> <dia:attribute name="text"> <dia:composite type="text"> @@ -4221,7 +4347,7 @@ <dia:real val="0.80000000000000004"/> </dia:attribute> <dia:attribute name="pos"> - <dia:point val="62,12.3"/> + <dia:point val="63,14.3"/> </dia:attribute> <dia:attribute name="color"> <dia:color val="#000000ff"/> @@ -4235,12 +4361,12 @@ <dia:enum val="3"/> </dia:attribute> </dia:object> - <dia:object type="Standard - Text" version="1" id="O28"> + <dia:object type="Standard - Text" version="1" id="O27"> <dia:attribute name="obj_pos"> - <dia:point val="62,15.3"/> + <dia:point val="63,17.3"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="62,14.705;78.725,15.45"/> + <dia:rectangle val="63,16.705;79.725,17.45"/> </dia:attribute> <dia:attribute name="text"> <dia:composite type="text"> @@ -4254,7 +4380,7 @@ <dia:real val="0.80000000000000004"/> </dia:attribute> <dia:attribute name="pos"> - <dia:point val="62,15.3"/> + <dia:point val="63,17.3"/> </dia:attribute> <dia:attribute name="color"> <dia:color val="#000000ff"/> @@ -4268,12 +4394,12 @@ <dia:enum val="3"/> </dia:attribute> </dia:object> - <dia:object type="Standard - Text" version="1" id="O29"> + <dia:object type="Standard - Text" version="1" id="O28"> <dia:attribute name="obj_pos"> - <dia:point val="62,16.3"/> + <dia:point val="63,18.3"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="62,15.705;80.39,16.45"/> + <dia:rectangle val="63,17.705;81.39,18.45"/> </dia:attribute> <dia:attribute name="text"> <dia:composite type="text"> @@ -4287,7 +4413,7 @@ <dia:real val="0.80000000000000004"/> </dia:attribute> <dia:attribute name="pos"> - <dia:point val="62,16.3"/> + <dia:point val="63,18.3"/> </dia:attribute> <dia:attribute name="color"> <dia:color val="#000000ff"/> @@ -4301,12 +4427,12 @@ <dia:enum val="3"/> </dia:attribute> </dia:object> - <dia:object type="Standard - Text" version="1" id="O30"> + <dia:object type="Standard - Text" version="1" id="O29"> <dia:attribute name="obj_pos"> - <dia:point val="62,14.3"/> + <dia:point val="63,16.3"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="62,13.705;75.6375,14.45"/> + <dia:rectangle val="63,15.705;76.6375,16.45"/> </dia:attribute> <dia:attribute name="text"> <dia:composite type="text"> @@ -4320,7 +4446,7 @@ <dia:real val="0.80000000000000004"/> </dia:attribute> <dia:attribute name="pos"> - <dia:point val="62,14.3"/> + <dia:point val="63,16.3"/> </dia:attribute> <dia:attribute name="color"> <dia:color val="#000000ff"/> @@ -4334,12 +4460,12 @@ <dia:enum val="3"/> </dia:attribute> </dia:object> - <dia:object type="Standard - Text" version="1" id="O31"> + <dia:object type="Standard - Text" version="1" id="O30"> <dia:attribute name="obj_pos"> - <dia:point val="62,17.3"/> + <dia:point val="63,19.3"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="62,16.705;79.82,17.45"/> + <dia:rectangle val="63,18.705;80.82,19.45"/> </dia:attribute> <dia:attribute name="text"> <dia:composite type="text"> @@ -4353,7 +4479,7 @@ <dia:real val="0.80000000000000004"/> </dia:attribute> <dia:attribute name="pos"> - <dia:point val="62,17.3"/> + <dia:point val="63,19.3"/> </dia:attribute> <dia:attribute name="color"> <dia:color val="#000000ff"/> @@ -4367,12 +4493,12 @@ <dia:enum val="3"/> </dia:attribute> </dia:object> - <dia:object type="Standard - Text" version="1" id="O32"> + <dia:object type="Standard - Text" version="1" id="O31"> <dia:attribute name="obj_pos"> - <dia:point val="62,13.3"/> + <dia:point val="63,15.3"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="62,12.705;73.7525,13.45"/> + <dia:rectangle val="63,14.705;74.7525,15.45"/> </dia:attribute> <dia:attribute name="text"> <dia:composite type="text"> @@ -4386,7 +4512,7 @@ <dia:real val="0.80000000000000004"/> </dia:attribute> <dia:attribute name="pos"> - <dia:point val="62,13.3"/> + <dia:point val="63,15.3"/> </dia:attribute> <dia:attribute name="color"> <dia:color val="#000000ff"/> @@ -4400,12 +4526,12 @@ <dia:enum val="3"/> </dia:attribute> </dia:object> - <dia:object type="Standard - Text" version="1" id="O33"> + <dia:object type="Standard - Text" version="1" id="O32"> <dia:attribute name="obj_pos"> - <dia:point val="62,23"/> + <dia:point val="63,23"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="62,22.405;79.41,23.15"/> + <dia:rectangle val="63,22.405;80.41,23.15"/> </dia:attribute> <dia:attribute name="text"> <dia:composite type="text"> @@ -4419,7 +4545,7 @@ <dia:real val="0.80000000000000004"/> </dia:attribute> <dia:attribute name="pos"> - <dia:point val="62,23"/> + <dia:point val="63,23"/> </dia:attribute> <dia:attribute name="color"> <dia:color val="#000000ff"/> @@ -4433,12 +4559,12 @@ <dia:enum val="3"/> </dia:attribute> </dia:object> - <dia:object type="Standard - Text" version="1" id="O34"> + <dia:object type="Standard - Text" version="1" id="O33"> <dia:attribute name="obj_pos"> - <dia:point val="62,18.3"/> + <dia:point val="63,20.3"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="62,17.705;75.82,18.45"/> + <dia:rectangle val="63,19.705;76.82,20.45"/> </dia:attribute> <dia:attribute name="text"> <dia:composite type="text"> @@ -4452,7 +4578,7 @@ <dia:real val="0.80000000000000004"/> </dia:attribute> <dia:attribute name="pos"> - <dia:point val="62,18.3"/> + <dia:point val="63,20.3"/> </dia:attribute> <dia:attribute name="color"> <dia:color val="#000000ff"/> @@ -4466,12 +4592,12 @@ <dia:enum val="3"/> </dia:attribute> </dia:object> - <dia:object type="Standard - Text" version="1" id="O35"> + <dia:object type="Standard - Text" version="1" id="O34"> <dia:attribute name="obj_pos"> - <dia:point val="62,19.3"/> + <dia:point val="63,21.3"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="62,18.705;78.9,19.45"/> + <dia:rectangle val="63,20.705;79.9,21.45"/> </dia:attribute> <dia:attribute name="text"> <dia:composite type="text"> @@ -4485,7 +4611,7 @@ <dia:real val="0.80000000000000004"/> </dia:attribute> <dia:attribute name="pos"> - <dia:point val="62,19.3"/> + <dia:point val="63,21.3"/> </dia:attribute> <dia:attribute name="color"> <dia:color val="#000000ff"/> @@ -4499,17 +4625,17 @@ <dia:enum val="3"/> </dia:attribute> </dia:object> - <dia:object type="Standard - Text" version="1" id="O36"> + <dia:object type="Standard - Text" version="1" id="O35"> <dia:attribute name="obj_pos"> - <dia:point val="62,20.1586"/> + <dia:point val="55,12"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="62,19.5636;79.21,20.3086"/> + <dia:rectangle val="55,11.405;83.9275,12.15"/> </dia:attribute> <dia:attribute name="text"> <dia:composite type="text"> <dia:attribute name="string"> - <dia:string>#[B] Binary large object, can be retrieved only alone#</dia:string> + <dia:string>#Visit http://wiki.sugarlabs.org/go/Platform_Team/Sugar_Network/Objects_model for details.#</dia:string> </dia:attribute> <dia:attribute name="font"> <dia:font family="sans" style="0" name="Helvetica"/> @@ -4518,7 +4644,7 @@ <dia:real val="0.80000000000000004"/> </dia:attribute> <dia:attribute name="pos"> - <dia:point val="62,20.1586"/> + <dia:point val="55,12"/> </dia:attribute> <dia:attribute name="color"> <dia:color val="#000000ff"/> diff --git a/misc/aslo_sync.py b/misc/aslo_sync.py new file mode 100755 index 0000000..0cb29d1 --- /dev/null +++ b/misc/aslo_sync.py @@ -0,0 +1,234 @@ +#!/usr/bin/env python + +import os +import time +import signal +import getpass + +import MySQLdb as mdb + +import restful_document +import sugar_network as client +import sugar_network_server as server + + +EXCLUDE_BUNDLE_IDS = ['net.gcompris'] + +CATEGIORIES_TO_TAGS = { + 'Search & Discovery': 'discovery', + 'Documents': 'documents', + 'Chat, mail and talk': 'conversation', + 'Programming': 'programming', + 'Maps & Geography': 'geography', + 'Media players': 'media', + 'Teacher tools': 'teacher', + 'Games': 'games', + 'Media creation': 'media', + 'Maths & Science': 'science', + 'News': 'news', + } + +MISNAMED_LICENSES = { + ('artistic', '2.0'): 'Artistic 2.0', + ('cc-by-sa',): 'CC-BY-SA', + ('creative', 'share', 'alike'): 'CC-BY-SA', + } + + +con = mdb.connect('localhost', 'root', getpass.getpass(), 'activities') + + +def main(): + rows = sqlexec(""" + SELECT + addons.id, + addons.guid, + licenses.name, + (select max(localized_string) from translations where + id=licenses.text), + versions.created, + versions.version, + (select max(localized_string) from translations where + id=versions.releasenotes), + files.filename, + (select version from appversions where + id=applications_versions.min), + (select version from appversions where + id=applications_versions.max) + FROM addons + INNER JOIN versions ON versions.addon_id=addons.id + INNER JOIN licenses ON licenses.id=versions.license_id + INNER JOIN files ON files.version_id=versions.id + INNER JOIN applications_versions ON + applications_versions.version_id=versions.id + WHERE addons.status=4 + """) + for row in rows: + addon_id, bundle_id, license_id, alicense, release_date, version, \ + releasenotes, filename, sugar_min, sugar_max = row + if [i for i in EXCLUDE_BUNDLE_IDS if i in bundle_id]: + continue + + if license_id == 0: + alicense = 'MPLv1.1' + elif license_id == 1: + alicense = 'GPLv2' + elif license_id == 2: + alicense = 'GPLv3' + elif license_id == 3: + alicense = 'LGPLv2' + elif license_id == 4: + alicense = 'LGPLv3' + elif license_id == 5: + alicense = 'MIT' + elif license_id == 6: + alicense = 'BSD' + else: + for good in server.GOOD_LICENSES: + if not alicense or good in ['ec']: + continue + if good in alicense: + alicense = good + break + else: + for words, good in MISNAMED_LICENSES.items(): + for i in words: + if i not in alicense.lower(): + break + else: + alicense = good + break + else: + print '-- Skip bad license %r' % alicense + continue + + query = client.Context.find(implement=[bundle_id]) + if query.total: + assert query.total == 1 + context_guid = query[0]['guid'] + else: + context_guid = context_new(addon_id, bundle_id) + + impl = client.Implementation.new() + impl['context'] = context_guid + impl['license'] = [alicense] + impl['version'] = version + impl['date'] = int(time.mktime(release_date.timetuple())) + impl['stability'] = 'stable' + impl['notes'] = releasenotes or '' + impl['url'] = 'http://download.sugarlabs.org/activities/%s/%s' % \ + (addon_id, filename) + impl['feed'] = { + 'requires': { + 'context': 'sugar-context-guid', + 'constraints': [{ + 'not-before': sugar_min, + 'before': '0.%s' % (int(sugar_max.split('.')[-1]) + 1), + }], + }, + } + impl.post() + + +def context_new(addon_id, bundle_id): + context = client.Context.new() + context['type'] = 'activity' + context['implement'] = [bundle_id] + + context['title'], context['summary'], context['description'], \ + context['homepage'], icondata = sqlexec(""" + SELECT + (select max(localized_string) from translations where + id=addons.name), + (select max(localized_string) from translations where + id=addons.summary), + (select max(localized_string) from translations where + id=addons.description), + (select max(localized_string) from translations where + id=addons.homepage), + icondata + FROM addons + WHERE id=%s + """ % addon_id)[0] + context['summary'] = context['summary'] or context['title'] + context['description'] = context['description'] or context['title'] + + tags = set() + for row in sqlexec(""" + SELECT + (select localized_string from translations where + id=categories.name AND locale='en-US') + FROM addons_categories + INNER JOIN categories ON + categories.id=addons_categories.category_id + WHERE + addons_categories.addon_id=%s + """ % addon_id): + tags.add(CATEGIORIES_TO_TAGS[row[0]]) + for row in sqlexec(""" + SELECT + tags.tag_text + FROM users_tags_addons + INNER JOIN tags ON tags.id=users_tags_addons.tag_id + INNER JOIN addons_users ON + addons_users.addon_id=users_tags_addons.addon_id + WHERE + users_tags_addons.addon_id=%s + """ % addon_id): + tags.add(row[0]) + context['tags'] = list(tags) + + context.post() + + if icondata: + context.set_blob('icon', icondata) + + for row in sqlexec(""" + SELECT + (select max(localized_string) from translations where + id=caption), + thumbdata, + filedata, + filetype + FROM previews + WHERE + addon_id=%s + """ % addon_id): + caption, thumb, data, mime_type = row + + artifact = client.Artifact.new() + artifact['context'] = context['guid'] + artifact['type'] = 'screenshot' + artifact['title'] = caption or '' + artifact['description'] = caption or '' + artifact['mime_type'] = mime_type + artifact.post() + + if thumb: + artifact.set_blob('preview', thumb) + if data: + artifact.set_blob('data', data) + + return context['guid'] + + +def sqlexec(text): + cur = con.cursor() + cur.execute(text) + return cur.fetchall() + + +if __name__ == '__main__': + server.data_root.value = 'tmp/db' + server.stats_root.value = 'tmp/stats' + server.logdir.value = 'tmp/log' + + server_pid = restful_document.fork(server.resources()) + + client.api_url.value = \ + 'http://%s:%s' % (server.host.value, server.port.value) + try: + main() + finally: + os.kill(server_pid, signal.SIGINT) + os.waitpid(server_pid, 0) diff --git a/sugar_network_server/__init__.py b/sugar_network_server/__init__.py index 42143eb..60052cc 100644 --- a/sugar_network_server/__init__.py +++ b/sugar_network_server/__init__.py @@ -24,6 +24,8 @@ from sugar_stats_server import stats, stats_root, stats_step, \ from sugar_network_server.resources import resources +from sugar_network_server.licenses import GOOD_LICENSES + def config(**kwargs): from gettext import gettext as _ diff --git a/sugar_network_server/env.py b/sugar_network_server/env.py index d7fadd5..155f1a0 100644 --- a/sugar_network_server/env.py +++ b/sugar_network_server/env.py @@ -17,13 +17,16 @@ VERSION = '0.1' LAYERS = ['general', 'deleted'] -CONTEXT_TYPES = ['activity', 'library'] +CONTEXT_TYPES = ['application', 'library', 'activity', 'article'] SOLUTION_PARENTS = ['question', 'idea', 'problem'] NOTIFICATION_TYPES = ['create', 'update', 'delete', 'vote'] NOTIFICATION_OBJECT_TYPES = [ '', 'content', 'question', 'idea', 'problem', 'review', 'solution', 'artifact', 'version', 'report', ] -VERSION_STABILITIES = [ +STABILITIES = [ 'insecure', 'buggy', 'developer', 'testing', 'stable', ] +ARTIFACT_TYPES = [ + 'screenshot', 'jobject', + ] diff --git a/sugar_network_server/resources/artifact.py b/sugar_network_server/resources/artifact.py index 9dfe51d..fe3973f 100644 --- a/sugar_network_server/resources/artifact.py +++ b/sugar_network_server/resources/artifact.py @@ -17,16 +17,23 @@ import active_document as ad +from sugar_network_server import env from sugar_network_server.resources.resource import Resource, Vote class Artifact(Resource): - @ad.active_property(slot=1, prefix='C', + @ad.active_property(prefix='C', permissions=ad.ACCESS_CREATE | ad.ACCESS_READ) def context(self, value): return value + @ad.active_property(prefix='T', + permissions=ad.ACCESS_CREATE | ad.ACCESS_READ, + typecast=env.ARTIFACT_TYPES) + def type(self, value): + return value + @ad.active_property(slot=2, prefix='S', full_text=True) def title(self, value): return value @@ -43,6 +50,10 @@ class Artifact(Resource): def description(self, value): return value + @ad.active_property(prefix='M') + def mime_type(self, value): + return value + @ad.active_property(ad.BlobProperty) def preview(self, value): return value diff --git a/sugar_network_server/resources/context.py b/sugar_network_server/resources/context.py index 29c0082..1777146 100644 --- a/sugar_network_server/resources/context.py +++ b/sugar_network_server/resources/context.py @@ -19,7 +19,6 @@ import active_document as ad from sugar_network_server import env from sugar_network_server.resources.resource import Resource, Vote -from sugar_network_server.licenses import GOOD_LICENSES class Context(Resource): @@ -52,23 +51,23 @@ class Context(Resource): def title(self, value): return value - @ad.active_property(prefix='D', full_text=True) - def description(self, value): + @ad.active_property(slot=4, prefix='R', full_text=True) + def summary(self, value): return value - @description.setter - def description(self, value): + @summary.setter + def summary(self, value): return value - @ad.active_property(prefix='L', typecast=[GOOD_LICENSES]) - def license(self, value): + @ad.active_property(prefix='D', full_text=True) + def description(self, value): return value - @license.setter - def license(self, value): + @description.setter + def description(self, value): return value - @ad.active_property(slot=4, prefix='H', default='', full_text=True) + @ad.active_property(slot=5, prefix='H', default='', full_text=True) def homepage(self, value): return value @@ -76,7 +75,11 @@ class Context(Resource): def homepage(self, value): return value - @ad.active_property(ad.CounterProperty, slot=5) + @ad.active_property(ad.BlobProperty) + def icon(self, value): + return value + + @ad.active_property(ad.CounterProperty, slot=6) def rating(self, value): return value diff --git a/sugar_network_server/resources/idea.py b/sugar_network_server/resources/idea.py index ae9046c..8d340c5 100644 --- a/sugar_network_server/resources/idea.py +++ b/sugar_network_server/resources/idea.py @@ -22,7 +22,7 @@ from sugar_network_server.resources.resource import Resource, Vote class Idea(Resource): - @ad.active_property(slot=1, prefix='C', + @ad.active_property(prefix='C', permissions=ad.ACCESS_CREATE | ad.ACCESS_READ) def context(self, value): return value diff --git a/sugar_network_server/resources/version.py b/sugar_network_server/resources/implementation.py index e440681..c75989a 100644 --- a/sugar_network_server/resources/version.py +++ b/sugar_network_server/resources/implementation.py @@ -16,16 +16,22 @@ import active_document as ad from sugar_network_server import env +from sugar_network_server.licenses import GOOD_LICENSES from sugar_network_server.resources.resource import Resource -class Version(Resource): +class Implementation(Resource): - @ad.active_property(slot=1, prefix='C', + @ad.active_property(prefix='C', permissions=ad.ACCESS_CREATE | ad.ACCESS_READ) def context(self, value): return value + @ad.active_property(prefix='L', typecast=[GOOD_LICENSES], + permissions=ad.ACCESS_CREATE | ad.ACCESS_READ) + def license(self, value): + return value + @ad.active_property(slot=2, prefix='V', permissions=ad.ACCESS_CREATE | ad.ACCESS_READ) def version(self, value): @@ -38,15 +44,25 @@ class Version(Resource): @ad.active_property(slot=4, prefix='S', permissions=ad.ACCESS_CREATE | ad.ACCESS_READ, - typecast=env.VERSION_STABILITIES) + typecast=env.STABILITIES) def stability(self, value): return value - @ad.active_property( - permissions=ad.ACCESS_CREATE | ad.ACCESS_READ, full_text=True) + @ad.active_property(ad.StoredProperty, + permissions=ad.ACCESS_CREATE | ad.ACCESS_READ, default='') + def feed(self, value): + return value + + @ad.active_property(full_text=True, + permissions=ad.ACCESS_CREATE | ad.ACCESS_READ) def notes(self, value): return value + @ad.active_property(prefix='U', + permissions=ad.ACCESS_CREATE | ad.ACCESS_READ) + def url(self, value): + return value + @ad.active_property(ad.BlobProperty) def bundle(self, value): return value diff --git a/sugar_network_server/resources/problem.py b/sugar_network_server/resources/problem.py index a056f42..91544d9 100644 --- a/sugar_network_server/resources/problem.py +++ b/sugar_network_server/resources/problem.py @@ -22,7 +22,7 @@ from sugar_network_server.resources.resource import Resource, Vote class Problem(Resource): - @ad.active_property(slot=1, prefix='C', + @ad.active_property(prefix='C', permissions=ad.ACCESS_CREATE | ad.ACCESS_READ) def context(self, value): return value diff --git a/sugar_network_server/resources/question.py b/sugar_network_server/resources/question.py index 6b533aa..363d7ee 100644 --- a/sugar_network_server/resources/question.py +++ b/sugar_network_server/resources/question.py @@ -22,7 +22,7 @@ from sugar_network_server.resources.resource import Resource, Vote class Question(Resource): - @ad.active_property(slot=1, prefix='C', + @ad.active_property(prefix='C', permissions=ad.ACCESS_CREATE | ad.ACCESS_READ) def context(self, value): return value diff --git a/sugar_network_server/resources/report.py b/sugar_network_server/resources/report.py index 9b8e2ff..ce9440d 100644 --- a/sugar_network_server/resources/report.py +++ b/sugar_network_server/resources/report.py @@ -20,9 +20,9 @@ from sugar_network_server.resources.resource import Resource class Report(Resource): - @ad.active_property(slot=1, prefix='V', + @ad.active_property(prefix='V', permissions=ad.ACCESS_CREATE | ad.ACCESS_READ) - def version(self, value): + def implementation(self, value): return value @ad.active_property( diff --git a/sugar_network_server/resources/review.py b/sugar_network_server/resources/review.py index 7f3900f..734ac0d 100644 --- a/sugar_network_server/resources/review.py +++ b/sugar_network_server/resources/review.py @@ -22,7 +22,7 @@ from sugar_network_server.resources.resource import Resource, Vote class Review(Resource): - @ad.active_property(slot=1, prefix='C', + @ad.active_property(prefix='C', permissions=ad.ACCESS_CREATE | ad.ACCESS_READ) def context(self, value): return value diff --git a/sugar_network_server/resources/solution.py b/sugar_network_server/resources/solution.py index bcbd365..2f194ad 100644 --- a/sugar_network_server/resources/solution.py +++ b/sugar_network_server/resources/solution.py @@ -23,13 +23,13 @@ from sugar_network_server.resources.resource import Resource, Vote class Solution(Resource): - @ad.active_property(slot=1, prefix='T', + @ad.active_property(prefix='T', permissions=ad.ACCESS_CREATE | ad.ACCESS_READ, typecast=env.SOLUTION_PARENTS) def parent_resource(self, value): return value - @ad.active_property(slot=2, prefix='P', + @ad.active_property(prefix='P', permissions=ad.ACCESS_CREATE | ad.ACCESS_READ) def parent(self, value): return value |