diff options
| author | 2011-10-11 19:14:30 +0200 | |
|---|---|---|
| committer | 2011-10-11 19:14:30 +0200 | |
| commit | ad7dcc3f9ed360769d7b53d8a06d1222c8374fa7 (patch) | |
| tree | 5f923f676f3846b32098cbe4057262d301eee96d | |
| parent | disabled js debug (diff) | |
| download | pyload-ad7dcc3f9ed360769d7b53d8a06d1222c8374fa7.tar.xz | |
pavement build script
| -rw-r--r-- | .hgignore | 5 | ||||
| -rw-r--r-- | locale/cli.pot | 4 | ||||
| -rw-r--r-- | locale/core.pot | 428 | ||||
| -rw-r--r-- | locale/django.pot | 399 | ||||
| -rw-r--r-- | locale/generate_locale.py | 111 | ||||
| -rw-r--r-- | locale/gui.pot | 4 | ||||
| -rw-r--r-- | locale/includes.txt | 1 | ||||
| -rw-r--r-- | locale/setup.pot | 4 | ||||
| -rw-r--r-- | module/plugins/hoster/OronCom.py | 1 | ||||
| -rwxr-xr-x | module/remote/thriftbackend/generateThrift.sh | 7 | ||||
| -rwxr-xr-x | module/remote/thriftbackend/thriftgen/pyload/Pyload-remote | 5 | ||||
| -rw-r--r-- | module/remote/thriftbackend/thriftgen/pyload/Pyload.py | 2 | ||||
| -rw-r--r-- | module/remote/thriftbackend/thriftgen/pyload/constants.py | 2 | ||||
| -rw-r--r-- | module/remote/thriftbackend/thriftgen/pyload/ttypes.py | 2 | ||||
| -rwxr-xr-x | module/web/compile_js.sh | 7 | ||||
| -rw-r--r-- | pavement.py | 276 | 
16 files changed, 714 insertions, 544 deletions
| @@ -31,3 +31,8 @@ webserver.pid  *.po  *.orig  *.rej +pyload/* +dist/* +build/* +setup.py +paver-minilib.zip
\ No newline at end of file diff --git a/locale/cli.pot b/locale/cli.pot index 249265fd8..b2d4f50a1 100644 --- a/locale/cli.pot +++ b/locale/cli.pot @@ -6,9 +6,9 @@  #, fuzzy  msgid ""  msgstr "" -"Project-Id-Version: pyLoad 0.4.8\n" +"Project-Id-Version: pyLoad 0.4.9\n"  "Report-Msgid-Bugs-To: 'bugs@pyload.org'\n" -"POT-Creation-Date: 2011-10-04 09:49+0200\n" +"POT-Creation-Date: 2011-10-11 18:59+0200\n"  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"  "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/locale/core.pot b/locale/core.pot index 19be5464a..6b38ef5e8 100644 --- a/locale/core.pot +++ b/locale/core.pot @@ -6,9 +6,9 @@  #, fuzzy  msgid ""  msgstr "" -"Project-Id-Version: pyLoad 0.4.8\n" +"Project-Id-Version: pyLoad 0.4.9\n"  "Report-Msgid-Bugs-To: 'bugs@pyload.org'\n" -"POT-Creation-Date: 2011-10-04 09:49+0200\n" +"POT-Creation-Date: 2011-10-11 18:59+0200\n"  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"  "Language-Team: LANGUAGE <LL@li.org>\n" @@ -134,6 +134,43 @@ msgstr ""  msgid "killed pyLoad from Terminal"  msgstr "" +#: module/common/JsEngine.py:156 +msgid "" +"No js engine detected, please install either Spidermonkey, ossp-js, pyv8 or " +"rhino" +msgstr "" + +#: module/common/MultiHoster.py:60 +msgid "No Hoster loaded" +msgstr "" + +#: module/remote/ThriftBackend.py:39 +msgid "Using SSL ThriftBackend" +msgstr "" + +#: module/remote/XMLRPCBackend.py:28 +msgid "Using SSL XMLRPCBackend" +msgstr "" + +#: module/remote/XMLRPCBackend.py:32 +msgid "SSL Certificates not found, fallback to auth XMLRPC server" +msgstr "" + +#: module/remote/RemoteManager.py:32 +#, python-format +msgid "Remote backend error: %s" +msgstr "" + +#: module/remote/RemoteManager.py:64 +#, python-format +msgid "Starting %(name)s: %(addr)s:%(port)s" +msgstr "" + +#: module/remote/RemoteManager.py:66 +#, python-format +msgid "Failed loading backend %(name)s | %(error)s" +msgstr "" +  #: module/ThreadManager.py:135  #, python-format  msgid "Reconnect Failed: %s" @@ -184,124 +221,6 @@ msgstr ""  msgid "No Client connected for captcha decrypting"  msgstr "" -#: module/Api.py:319 -#, python-format -msgid "Added package %(name)s containing %(count)d links" -msgstr "" - -#: module/Api.py:582 -#, python-format -msgid "Added %(count)d links to package #%(package)d " -msgstr "" - -#: module/PluginThread.py:179 -#, python-format -msgid "Download starts: %s" -msgstr "" - -#: module/PluginThread.py:186 module/PluginThread.py:361 -#, python-format -msgid "Plugin %s is missing a function." -msgstr "" - -#: module/PluginThread.py:194 module/PluginThread.py:257 -#: module/PluginThread.py:378 -#, python-format -msgid "Download aborted: %s" -msgstr "" - -#: module/PluginThread.py:214 -#, python-format -msgid "Download restarted: %(name)s | %(msg)s" -msgstr "" - -#: module/PluginThread.py:223 module/PluginThread.py:369 -#, python-format -msgid "Download is offline: %s" -msgstr "" - -#: module/PluginThread.py:226 -#, python-format -msgid "Download is temporary offline: %s" -msgstr "" - -#: module/PluginThread.py:229 module/PluginThread.py:296 -#, python-format -msgid "Download failed: %(name)s | %(msg)s" -msgstr "" - -#: module/PluginThread.py:246 -msgid "" -"Couldn't connect to host or connection reset, waiting 1 minute and retry." -msgstr "" - -#: module/PluginThread.py:282 -#, python-format -msgid "Download skipped: %(name)s due to %(plugin)s" -msgstr "" - -#: module/PluginThread.py:312 -#, python-format -msgid "Download finished: %s" -msgstr "" - -#: module/PluginThread.py:357 -#, python-format -msgid "Decrypting starts: %s" -msgstr "" - -#: module/PluginThread.py:372 module/PluginThread.py:390 -#, python-format -msgid "Decrypting failed: %(name)s | %(msg)s" -msgstr "" - -#: module/PluginThread.py:384 -#, python-format -msgid "Retrying %s" -msgstr "" - -#: module/PluginThread.py:605 -#, python-format -msgid "Info Fetching for %(name)s failed | %(err)s" -msgstr "" - -#: module/common/JsEngine.py:133 -msgid "" -"No js engine detected, please install either Spidermonkey, ossp-js, pyv8 or " -"rhino" -msgstr "" - -#: module/common/MultiHoster.py:60 -msgid "No Hoster loaded" -msgstr "" - -#: module/remote/ThriftBackend.py:39 -msgid "Using SSL ThriftBackend" -msgstr "" - -#: module/remote/XMLRPCBackend.py:28 -msgid "Using SSL XMLRPCBackend" -msgstr "" - -#: module/remote/XMLRPCBackend.py:32 -msgid "SSL Certificates not found, fallback to auth XMLRPC server" -msgstr "" - -#: module/remote/RemoteManager.py:32 -#, python-format -msgid "Remote backend error: %s" -msgstr "" - -#: module/remote/RemoteManager.py:64 -#, python-format -msgid "Starting %(name)s: %(addr)s:%(port)s" -msgstr "" - -#: module/remote/RemoteManager.py:66 -#, python-format -msgid "Failed loading backend %(name)s | %(error)s" -msgstr "" -  #: module/web/ServerThread.py:35  msgid "SSL certificates not found."  msgstr "" @@ -382,23 +301,23 @@ msgstr ""  msgid "Starting lightweight webserver (bjoern): %(host)s:%(port)d"  msgstr "" -#: module/web/pyload_app.py:109 +#: module/web/pyload_app.py:125  msgid "You dont have permission to access this page."  msgstr "" -#: module/web/pyload_app.py:177 +#: module/web/pyload_app.py:193  msgid "Download directory not found."  msgstr "" -#: module/web/pyload_app.py:244 module/web/pyload_app.py:251 +#: module/web/pyload_app.py:260 module/web/pyload_app.py:267  msgid "unlimited"  msgstr "" -#: module/web/pyload_app.py:246 module/web/pyload_app.py:253 +#: module/web/pyload_app.py:262 module/web/pyload_app.py:269  msgid "not available"  msgstr "" -#: module/web/pyload_app.py:511 +#: module/web/pyload_app.py:509  msgid "Run pyLoadCore.py -s to access the setup."  msgstr "" @@ -407,90 +326,14 @@ msgstr ""  msgid "waiting %s"  msgstr "" -#: module/plugins/Plugin.py:387 -msgid "" -"Pil and tesseract not installed and no Client connected for captcha " -"decrypting" -msgstr "" - -#: module/plugins/Plugin.py:391 -msgid "No captcha result obtained in appropiate time by any of the plugins." -msgstr "" - -#: module/plugins/Plugin.py:497 module/plugins/Plugin.py:532 -#: module/plugins/hoster/Xdcc.py:237 -#, python-format -msgid "Setting User and Group failed: %s" -msgstr "" - -#: module/plugins/Container.py:68 -msgid "File not exists." -msgstr "" - -#: module/plugins/PluginManager.py:72 -msgid "Crypter" -msgstr "" - -#: module/plugins/PluginManager.py:73 -msgid "Container" -msgstr "" - -#: module/plugins/PluginManager.py:74 -msgid "Hoster" -msgstr "" - -#: module/plugins/PluginManager.py:76 -msgid "Captcha" -msgstr "" - -#: module/plugins/PluginManager.py:77 -msgid "Account" -msgstr "" - -#: module/plugins/PluginManager.py:78 -msgid "Hook" -msgstr "" - -#: module/plugins/PluginManager.py:159 -#, python-format -msgid "%s has a invalid pattern." -msgstr "" - -#: module/plugins/PluginManager.py:320 -#, python-format -msgid "Error importing %(name)s: %(msg)s" -msgstr "" - -#: module/plugins/PluginManager.py:321 -msgid "You should fix dependicies or deactivate it." -msgstr "" - -#: module/plugins/AccountManager.py:87 -msgid "Account settings deleted, due to new config format." -msgstr "" - -#: module/plugins/Account.py:85 module/plugins/Account.py:91 -#, python-format -msgid "Could not login with account %(user)s | %(msg)s" -msgstr "" - -#: module/plugins/Account.py:86 -msgid "Wrong Password" -msgstr "" - -#: module/plugins/Account.py:240 +#: module/Api.py:323  #, python-format -msgid "Your Time %s has wrong format, use: 1:22-3:44" -msgstr "" - -#: module/plugins/Account.py:266 -#, python-format -msgid "Account %s has not enough traffic, checking again in 30min" +msgid "Added package %(name)s containing %(count)d links"  msgstr "" -#: module/plugins/Account.py:273 +#: module/Api.py:586  #, python-format -msgid "Account %s is expired, checking again in 1h" +msgid "Added %(count)d links to package #%(package)d "  msgstr ""  #: module/plugins/crypter/SerienjunkiesOrg.py:122 @@ -668,6 +511,15 @@ msgstr ""  msgid "Error when updating %s"  msgstr "" +#: module/plugins/hoster/OronCom.py:133 +msgid "Not enough traffic left" +msgstr "" + +#: module/plugins/hoster/OronCom.py:135 +#: module/plugins/hoster/UploadedTo.py:121 +msgid "Traffic exceeded" +msgstr "" +  #: module/plugins/hoster/MegauploadCom.py:135  msgid "You should enable direct Download in your Megaupload Account settings"  msgstr "" @@ -704,10 +556,6 @@ msgstr ""  msgid "%s: Not enough traffic left"  msgstr "" -#: module/plugins/hoster/UploadedTo.py:121 -msgid "Traffic exceeded" -msgstr "" -  #: module/plugins/hoster/ShareonlineBiz.py:106  msgid "Parallel download issue"  msgstr "" @@ -720,11 +568,11 @@ msgstr ""  msgid "Please enter your rehost.to account or deactivate this plugin"  msgstr "" -#: module/plugins/hoster/FileserveCom.py:90 +#: module/plugins/hoster/FileserveCom.py:87  msgid "Not logged in."  msgstr "" -#: module/plugins/hoster/FileserveCom.py:115 +#: module/plugins/hoster/FileserveCom.py:112  msgid "Parallel download error, now waiting 60s."  msgstr "" @@ -784,11 +632,30 @@ msgstr ""  msgid "LinkList could not be cleared."  msgstr "" +#: module/plugins/Plugin.py:387 +msgid "" +"Pil and tesseract not installed and no Client connected for captcha " +"decrypting" +msgstr "" + +#: module/plugins/Plugin.py:391 +msgid "No captcha result obtained in appropiate time by any of the plugins." +msgstr "" + +#: module/plugins/Plugin.py:496 module/plugins/Plugin.py:531 +#, python-format +msgid "Setting User and Group failed: %s" +msgstr "" + +#: module/plugins/Container.py:68 +msgid "File not exists." +msgstr "" +  #: module/plugins/accounts/MegauploadCom.py:41  msgid "Activate direct Download in your MegaUpload Account"  msgstr "" -#: module/plugins/accounts/FilesonicCom.py:54 +#: module/plugins/accounts/FilesonicCom.py:49  msgid "Invalid login retrieving user details"  msgstr "" @@ -796,6 +663,72 @@ msgstr ""  msgid "Activate direct Download in your Bitshare Account"  msgstr "" +#: module/plugins/PluginManager.py:72 +msgid "Crypter" +msgstr "" + +#: module/plugins/PluginManager.py:73 +msgid "Container" +msgstr "" + +#: module/plugins/PluginManager.py:74 +msgid "Hoster" +msgstr "" + +#: module/plugins/PluginManager.py:76 +msgid "Captcha" +msgstr "" + +#: module/plugins/PluginManager.py:77 +msgid "Account" +msgstr "" + +#: module/plugins/PluginManager.py:78 +msgid "Hook" +msgstr "" + +#: module/plugins/PluginManager.py:159 +#, python-format +msgid "%s has a invalid pattern." +msgstr "" + +#: module/plugins/PluginManager.py:320 +#, python-format +msgid "Error importing %(name)s: %(msg)s" +msgstr "" + +#: module/plugins/PluginManager.py:321 +msgid "You should fix dependicies or deactivate it." +msgstr "" + +#: module/plugins/AccountManager.py:87 +msgid "Account settings deleted, due to new config format." +msgstr "" + +#: module/plugins/Account.py:85 module/plugins/Account.py:91 +#, python-format +msgid "Could not login with account %(user)s | %(msg)s" +msgstr "" + +#: module/plugins/Account.py:86 +msgid "Wrong Password" +msgstr "" + +#: module/plugins/Account.py:240 +#, python-format +msgid "Your Time %s has wrong format, use: 1:22-3:44" +msgstr "" + +#: module/plugins/Account.py:266 +#, python-format +msgid "Account %s has not enough traffic, checking again in 30min" +msgstr "" + +#: module/plugins/Account.py:273 +#, python-format +msgid "Account %s is expired, checking again in 1h" +msgstr "" +  #: module/database/FileDatabase.py:47  msgid "finished"  msgstr "" @@ -875,3 +808,74 @@ msgstr ""  #: module/database/DatabaseBackend.py:252  msgid "Converting old Django DB"  msgstr "" + +#: module/PluginThread.py:182 +#, python-format +msgid "Download starts: %s" +msgstr "" + +#: module/PluginThread.py:189 module/PluginThread.py:364 +#, python-format +msgid "Plugin %s is missing a function." +msgstr "" + +#: module/PluginThread.py:197 module/PluginThread.py:260 +#: module/PluginThread.py:381 +#, python-format +msgid "Download aborted: %s" +msgstr "" + +#: module/PluginThread.py:217 +#, python-format +msgid "Download restarted: %(name)s | %(msg)s" +msgstr "" + +#: module/PluginThread.py:226 module/PluginThread.py:372 +#, python-format +msgid "Download is offline: %s" +msgstr "" + +#: module/PluginThread.py:229 +#, python-format +msgid "Download is temporary offline: %s" +msgstr "" + +#: module/PluginThread.py:232 module/PluginThread.py:299 +#, python-format +msgid "Download failed: %(name)s | %(msg)s" +msgstr "" + +#: module/PluginThread.py:249 +msgid "" +"Couldn't connect to host or connection reset, waiting 1 minute and retry." +msgstr "" + +#: module/PluginThread.py:285 +#, python-format +msgid "Download skipped: %(name)s due to %(plugin)s" +msgstr "" + +#: module/PluginThread.py:315 +#, python-format +msgid "Download finished: %s" +msgstr "" + +#: module/PluginThread.py:360 +#, python-format +msgid "Decrypting starts: %s" +msgstr "" + +#: module/PluginThread.py:375 module/PluginThread.py:393 +#, python-format +msgid "Decrypting failed: %(name)s | %(msg)s" +msgstr "" + +#: module/PluginThread.py:387 +#, python-format +msgid "Retrying %s" +msgstr "" + +#: module/PluginThread.py:608 +#, python-format +msgid "Info Fetching for %(name)s failed | %(err)s" +msgstr "" diff --git a/locale/django.pot b/locale/django.pot index fc9604189..999a00adc 100644 --- a/locale/django.pot +++ b/locale/django.pot @@ -6,9 +6,9 @@  #, fuzzy  msgid ""  msgstr "" -"Project-Id-Version: pyLoad 0.4.8\n" +"Project-Id-Version: pyLoad 0.4.9\n"  "Report-Msgid-Bugs-To: 'bugs@pyload.org'\n" -"POT-Creation-Date: 2011-10-04 09:49+0200\n" +"POT-Creation-Date: 2011-10-11 18:59+0200\n"  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"  "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,23 +17,89 @@ msgstr ""  "Content-Type: text/plain; charset=UTF-8\n"  "Content-Transfer-Encoding: 8bit\n" -#: module/web/pyload_app.py:109 +#: module/web/translations.js:1 module/web/templates/default/base.html:123 +#: module/web/templates/default/base.html:124 +#: module/web/templates/default/settings_item.html:14 +msgid "on" +msgstr "" + +#: module/web/translations.js:2 module/web/templates/default/captcha.html:7 +msgid "Please read the text on the captcha." +msgstr "" + +#: module/web/translations.js:3 +msgid "Settings saved." +msgstr "" + +#: module/web/translations.js:4 module/web/templates/default/base.html:123 +#: module/web/templates/default/base.html:124 +#: module/web/templates/default/settings_item.html:16 +msgid "off" +msgstr "" + +#: module/web/translations.js:5 +msgid "Success" +msgstr "" + +#: module/web/translations.js:6 +#: module/web/templates/default/filemanager.html:65 +#: module/web/templates/default/folder.html:14 +msgid "Folder is empty" +msgstr "" + +#: module/web/translations.js:7 +msgid "Restart Link" +msgstr "" + +#: module/web/translations.js:8 +msgid "Delete Link" +msgstr "" + +#: module/web/translations.js:9 +msgid "Please Enter a packagename." +msgstr "" + +#: module/web/translations.js:10 +msgid "Please click on the right captcha position." +msgstr "" + +#: module/web/translations.js:11 +msgid "Error occured." +msgstr "" + +#: module/web/translations.js:12 +msgid "New Captcha Request" +msgstr "" + +#: module/web/translations.js:13 +msgid "Failed" +msgstr "" + +#: module/web/translations.js:14 +msgid "No Captchas to read." +msgstr "" + +#: module/web/translations.js:15 +msgid "New folder" +msgstr "" + +#: module/web/pyload_app.py:125  msgid "You dont have permission to access this page."  msgstr "" -#: module/web/pyload_app.py:177 +#: module/web/pyload_app.py:193  msgid "Download directory not found."  msgstr "" -#: module/web/pyload_app.py:244 module/web/pyload_app.py:251 +#: module/web/pyload_app.py:260 module/web/pyload_app.py:267  msgid "unlimited"  msgstr "" -#: module/web/pyload_app.py:246 module/web/pyload_app.py:253 +#: module/web/pyload_app.py:262 module/web/pyload_app.py:269  msgid "not available"  msgstr "" -#: module/web/pyload_app.py:511 +#: module/web/pyload_app.py:509  msgid "Run pyLoadCore.py -s to access the setup."  msgstr "" @@ -101,7 +167,7 @@ msgid "Remote Interface Port:"  msgstr ""  #: module/web/templates/default/downloads.html:6 -#: module/web/templates/default/base.html:243 +#: module/web/templates/default/base.html:93  #: module/web/templates/default/home.html:220  msgid "Downloads"  msgstr "" @@ -110,234 +176,202 @@ msgstr ""  msgid "FileManager"  msgstr "" -#: module/web/templates/default/filemanager.html:65 -#: module/web/templates/default/folder.html:14 -msgid "Folder is empty" -msgstr "" - -#: module/web/templates/default/rename_directory.html:3 -msgid "Rename directory" -msgstr "" - -#: module/web/templates/default/rename_directory.html:7 -msgid "New Name" -msgstr "" - -#: module/web/templates/default/rename_directory.html:8 -msgid "Name the selected item must be renamed to." -msgstr "" - -#: module/web/templates/default/rename_directory.html:12 -#: module/web/templates/default/admin.html:118 -#: module/web/templates/default/admin.html:148 -#: module/web/templates/default/settings.html:198 -#: module/web/templates/default/edit_package.html:21 -#: module/web/templates/default/captcha.html:104 -msgid "Submit" -msgstr "" - -#: module/web/templates/default/rename_directory.html:13 -#: module/web/templates/default/admin.html:149 -#: module/web/templates/default/settings.html:229 -#: module/web/templates/default/queue.html:78 -#: module/web/templates/default/window.html:44 -#: module/web/templates/default/edit_package.html:22 -msgid "Reset" -msgstr "" - -#: module/web/templates/default/rename_directory.html:20 -msgid "Delete directory" -msgstr "" - -#: module/web/templates/default/rename_directory.html:24 -msgid "Yes" -msgstr "" - -#: module/web/templates/default/rename_directory.html:25 -msgid "No" -msgstr "" - -#: module/web/templates/default/admin.html:70 -#: module/web/templates/default/admin.html:71 +#: module/web/templates/default/admin.html:58 +#: module/web/templates/default/admin.html:59  msgid "Administrate User"  msgstr "" -#: module/web/templates/default/admin.html:75 +#: module/web/templates/default/admin.html:63  msgid "To add user or change passwords use:"  msgstr "" -#: module/web/templates/default/admin.html:76 +#: module/web/templates/default/admin.html:64  msgid "Important: Admin user have always all permissions!"  msgstr "" -#: module/web/templates/default/admin.html:82 -#: module/web/templates/default/settings.html:122 -#: module/web/templates/default/window.html:10 +#: module/web/templates/default/admin.html:70 +#: module/web/templates/default/settings.html:91 +#: module/web/templates/default/queue.html:80 +#: module/web/templates/default/window.html:7  #: module/web/templates/default/home.html:237 -#: module/web/templates/default/edit_package.html:6  msgid "Name"  msgstr "" -#: module/web/templates/default/admin.html:85 -#: module/web/templates/default/admin.html:124 +#: module/web/templates/default/admin.html:73 +#: module/web/templates/default/admin.html:112  msgid "Change Password"  msgstr "" -#: module/web/templates/default/admin.html:88 +#: module/web/templates/default/admin.html:76  msgid "Admin"  msgstr "" -#: module/web/templates/default/admin.html:91 +#: module/web/templates/default/admin.html:79  msgid "Permissions"  msgstr "" -#: module/web/templates/default/admin.html:98 +#: module/web/templates/default/admin.html:86  msgid "change"  msgstr "" -#: module/web/templates/default/admin.html:126 +#: module/web/templates/default/admin.html:106 +#: module/web/templates/default/admin.html:136 +#: module/web/templates/default/settings.html:167 +#: module/web/templates/default/queue.html:95 +#: module/web/templates/default/captcha.html:33 +msgid "Submit" +msgstr "" + +#: module/web/templates/default/admin.html:114  msgid "Enter your current and desired Password."  msgstr "" -#: module/web/templates/default/admin.html:127 +#: module/web/templates/default/admin.html:115  msgid "User"  msgstr "" -#: module/web/templates/default/admin.html:128 -#: module/web/templates/default/settings.html:210 +#: module/web/templates/default/admin.html:116 +#: module/web/templates/default/settings.html:179  msgid "Your username."  msgstr "" -#: module/web/templates/default/admin.html:132 +#: module/web/templates/default/admin.html:120  msgid "Current password"  msgstr "" -#: module/web/templates/default/admin.html:133 -#: module/web/templates/default/settings.html:215 +#: module/web/templates/default/admin.html:121 +#: module/web/templates/default/settings.html:184  msgid "The password for this account."  msgstr "" -#: module/web/templates/default/admin.html:137 +#: module/web/templates/default/admin.html:125  msgid "New password"  msgstr "" -#: module/web/templates/default/admin.html:138 +#: module/web/templates/default/admin.html:126  msgid "The new password."  msgstr "" -#: module/web/templates/default/admin.html:142 +#: module/web/templates/default/admin.html:130  msgid "New password (repeat)"  msgstr "" -#: module/web/templates/default/admin.html:143 +#: module/web/templates/default/admin.html:131  msgid "Please repeat the new password."  msgstr "" +#: module/web/templates/default/admin.html:137 +#: module/web/templates/default/settings.html:198 +#: module/web/templates/default/queue.html:96 +#: module/web/templates/default/window.html:41 +msgid "Reset" +msgstr "" +  #: module/web/templates/default/settings.html:3  #: module/web/templates/default/settings.html:4 -#: module/web/templates/default/base.html:252 +#: module/web/templates/default/base.html:102  #: module/web/templates/default/home.html:229  msgid "Config"  msgstr "" -#: module/web/templates/default/settings.html:47 +#: module/web/templates/default/settings.html:16  msgid "General"  msgstr "" -#: module/web/templates/default/settings.html:48 +#: module/web/templates/default/settings.html:17  msgid "Plugins"  msgstr "" -#: module/web/templates/default/settings.html:49 +#: module/web/templates/default/settings.html:18  msgid "Accounts"  msgstr "" -#: module/web/templates/default/settings.html:76 -#: module/web/templates/default/settings.html:105 +#: module/web/templates/default/settings.html:45 +#: module/web/templates/default/settings.html:74  msgid "Choose a section from the menu"  msgstr "" -#: module/web/templates/default/settings.html:121 +#: module/web/templates/default/settings.html:90  msgid "Plugin"  msgstr "" -#: module/web/templates/default/settings.html:123 -#: module/web/templates/default/settings.html:214 +#: module/web/templates/default/settings.html:92 +#: module/web/templates/default/settings.html:183  #: module/web/templates/default/login.html:19 -#: module/web/templates/default/window.html:24 -#: module/web/templates/default/edit_package.html:16 +#: module/web/templates/default/queue.html:90 +#: module/web/templates/default/window.html:21  msgid "Password"  msgstr "" -#: module/web/templates/default/settings.html:124 +#: module/web/templates/default/settings.html:93  #: module/web/templates/default/home.html:238  msgid "Status"  msgstr "" -#: module/web/templates/default/settings.html:125 +#: module/web/templates/default/settings.html:94  msgid "Premium"  msgstr "" -#: module/web/templates/default/settings.html:126 +#: module/web/templates/default/settings.html:95  msgid "Valid until"  msgstr "" -#: module/web/templates/default/settings.html:127 +#: module/web/templates/default/settings.html:96  msgid "Traffic left"  msgstr "" -#: module/web/templates/default/settings.html:128 +#: module/web/templates/default/settings.html:97  msgid "Time"  msgstr "" -#: module/web/templates/default/settings.html:129 +#: module/web/templates/default/settings.html:98  msgid "Max Parallel"  msgstr "" -#: module/web/templates/default/settings.html:130 +#: module/web/templates/default/settings.html:99  msgid "Delete?"  msgstr "" -#: module/web/templates/default/settings.html:152 +#: module/web/templates/default/settings.html:121  msgid "valid"  msgstr "" -#: module/web/templates/default/settings.html:155 +#: module/web/templates/default/settings.html:124  msgid "not valid"  msgstr "" -#: module/web/templates/default/settings.html:162 +#: module/web/templates/default/settings.html:131  msgid "yes"  msgstr "" -#: module/web/templates/default/settings.html:165 +#: module/web/templates/default/settings.html:134  msgid "no"  msgstr "" -#: module/web/templates/default/settings.html:199 -#: module/web/templates/default/settings.html:228 -#: module/web/templates/default/base.html:267 +#: module/web/templates/default/settings.html:168 +#: module/web/templates/default/settings.html:197 +#: module/web/templates/default/base.html:117  msgid "Add"  msgstr "" -#: module/web/templates/default/settings.html:207 +#: module/web/templates/default/settings.html:176  msgid "Add Account"  msgstr "" -#: module/web/templates/default/settings.html:208 +#: module/web/templates/default/settings.html:177  msgid "Enter your account data to use premium features."  msgstr "" -#: module/web/templates/default/settings.html:209 +#: module/web/templates/default/settings.html:178  #: module/web/templates/default/login.html:3  msgid "Login"  msgstr "" -#: module/web/templates/default/settings.html:219 +#: module/web/templates/default/settings.html:188  msgid "Type"  msgstr "" -#: module/web/templates/default/settings.html:220 +#: module/web/templates/default/settings.html:189  msgid "Choose the hoster for your account."  msgstr "" @@ -397,115 +431,103 @@ msgstr ""  msgid "To reset your login data or add an user run:"  msgstr "" -#: module/web/templates/default/base.html:18 -#: module/web/templates/default/base.html:289 +#: module/web/templates/default/base.html:20 +#: module/web/templates/default/base.html:139  msgid "Webinterface"  msgstr "" -#: module/web/templates/default/base.html:189 +#: module/web/templates/default/base.html:39  msgid "pyLoad Update available!"  msgstr "" -#: module/web/templates/default/base.html:196 +#: module/web/templates/default/base.html:46  msgid "Plugins updated, please restart!"  msgstr "" -#: module/web/templates/default/base.html:202 +#: module/web/templates/default/base.html:52  msgid "Captcha waiting"  msgstr "" -#: module/web/templates/default/base.html:207 +#: module/web/templates/default/base.html:57  msgid "Logout"  msgstr "" -#: module/web/templates/default/base.html:209 +#: module/web/templates/default/base.html:59  msgid "Administrate"  msgstr "" -#: module/web/templates/default/base.html:211 +#: module/web/templates/default/base.html:61  msgid "Info"  msgstr "" -#: module/web/templates/default/base.html:215 +#: module/web/templates/default/base.html:65  msgid "Please Login!"  msgstr "" -#: module/web/templates/default/base.html:234 +#: module/web/templates/default/base.html:84  #: module/web/templates/default/home.html:211  msgid "Home"  msgstr "" -#: module/web/templates/default/base.html:237 +#: module/web/templates/default/base.html:87  #: module/web/templates/default/queue.html:15 -#: module/web/templates/default/window.html:37 +#: module/web/templates/default/window.html:34  #: module/web/templates/default/home.html:214  msgid "Queue"  msgstr "" -#: module/web/templates/default/base.html:240 +#: module/web/templates/default/base.html:90  #: module/web/templates/default/queue.html:17 -#: module/web/templates/default/window.html:39 +#: module/web/templates/default/window.html:36  #: module/web/templates/default/home.html:217  msgid "Collector"  msgstr "" -#: module/web/templates/default/base.html:249 +#: module/web/templates/default/base.html:99  #: module/web/templates/default/logs.html:3  #: module/web/templates/default/logs.html:4  #: module/web/templates/default/home.html:226  msgid "Logs"  msgstr "" -#: module/web/templates/default/base.html:264 +#: module/web/templates/default/base.html:114  #: module/web/templates/default/logs.html:12  msgid "Start"  msgstr "" -#: module/web/templates/default/base.html:265 +#: module/web/templates/default/base.html:115  msgid "Stop"  msgstr "" -#: module/web/templates/default/base.html:266 +#: module/web/templates/default/base.html:116  msgid "Cancel"  msgstr "" -#: module/web/templates/default/base.html:273 +#: module/web/templates/default/base.html:123  msgid "Download:"  msgstr "" -#: module/web/templates/default/base.html:273 -#: module/web/templates/default/base.html:274 -#: module/web/templates/default/settings_item.html:14 -msgid "on" -msgstr "" - -#: module/web/templates/default/base.html:273 -#: module/web/templates/default/base.html:274 -#: module/web/templates/default/settings_item.html:16 -msgid "off" -msgstr "" - -#: module/web/templates/default/base.html:274 +#: module/web/templates/default/base.html:124  msgid "Reconnect:"  msgstr "" -#: module/web/templates/default/base.html:275 +#: module/web/templates/default/base.html:125  msgid "Speed:"  msgstr "" -#: module/web/templates/default/base.html:276 +#: module/web/templates/default/base.html:126  msgid "Active:"  msgstr "" -#: module/web/templates/default/base.html:277 +#: module/web/templates/default/base.html:127  msgid "Reload page"  msgstr "" -#: module/web/templates/default/base.html:307 +#: module/web/templates/default/base.html:157  msgid "loading"  msgstr "" -#: module/web/templates/default/base.html:316 +#: module/web/templates/default/base.html:166  msgid "Back to top"  msgstr "" @@ -541,53 +563,68 @@ msgstr ""  msgid "Password:"  msgstr "" -#: module/web/templates/default/queue.html:75  #: module/web/templates/default/queue.html:77 -msgid "Delete Package" +msgid "Edit Package" +msgstr "" + +#: module/web/templates/default/queue.html:78 +msgid "Edit the package detais below."  msgstr "" -#: module/web/templates/default/queue.html:76 -msgid "Are you sure, that you want to delete this package?" +#: module/web/templates/default/queue.html:81 +msgid "The name of the package."  msgstr "" -#: module/web/templates/default/window.html:8 -#: module/web/templates/default/window.html:43 +#: module/web/templates/default/queue.html:85 +msgid "Folder" +msgstr "" + +#: module/web/templates/default/queue.html:86 +msgid "Name of subfolder for these downloads." +msgstr "" + +#: module/web/templates/default/queue.html:91 +msgid "List of passwords used for unrar." +msgstr "" + +#: module/web/templates/default/window.html:5 +#: module/web/templates/default/window.html:40  msgid "Add Package"  msgstr "" -#: module/web/templates/default/window.html:9 +#: module/web/templates/default/window.html:6  msgid "Paste your links or upload a container."  msgstr "" -#: module/web/templates/default/window.html:11 +#: module/web/templates/default/window.html:8  msgid "The name of the new package."  msgstr "" -#: module/web/templates/default/window.html:15 +#: module/web/templates/default/window.html:12  msgid "Links"  msgstr "" -#: module/web/templates/default/window.html:16 +#: module/web/templates/default/window.html:13  msgid "Paste your links here or any text and press the filter button."  msgstr "" -#: module/web/templates/default/window.html:17 +#: module/web/templates/default/window.html:14  msgid "Filter urls"  msgstr "" -#: module/web/templates/default/window.html:25 +#: module/web/templates/default/window.html:22  msgid "Password for RAR-Archive"  msgstr "" -#: module/web/templates/default/window.html:29 +#: module/web/templates/default/window.html:26  msgid "File"  msgstr "" -#: module/web/templates/default/window.html:30 +#: module/web/templates/default/window.html:27  msgid "Upload a container."  msgstr "" -#: module/web/templates/default/window.html:34 +#: module/web/templates/default/window.html:31  msgid "Destination"  msgstr "" @@ -603,54 +640,26 @@ msgstr ""  msgid "Progress"  msgstr "" -#: module/web/templates/default/edit_package.html:3 -msgid "Edit Package" -msgstr "" - -#: module/web/templates/default/edit_package.html:4 -msgid "Edit the package detais below." -msgstr "" - -#: module/web/templates/default/edit_package.html:7 -msgid "The name of the package." -msgstr "" - -#: module/web/templates/default/edit_package.html:11 -msgid "Folder" -msgstr "" - -#: module/web/templates/default/edit_package.html:12 -msgid "Name of subfolder for these downloads." -msgstr "" - -#: module/web/templates/default/edit_package.html:17 -msgid "List of passwords used for unrar." -msgstr "" - -#: module/web/templates/default/captcha.html:77 +#: module/web/templates/default/captcha.html:6  msgid "Captcha reading"  msgstr "" -#: module/web/templates/default/captcha.html:78 -msgid "Please read the text on the captcha." -msgstr "" - -#: module/web/templates/default/captcha.html:84 +#: module/web/templates/default/captcha.html:13  msgid "Captcha"  msgstr "" -#: module/web/templates/default/captcha.html:85 +#: module/web/templates/default/captcha.html:14  msgid "The captcha."  msgstr "" -#: module/web/templates/default/captcha.html:91 +#: module/web/templates/default/captcha.html:20  msgid "Text"  msgstr "" -#: module/web/templates/default/captcha.html:92 +#: module/web/templates/default/captcha.html:21  msgid "Input the text on the captcha."  msgstr "" -#: module/web/templates/default/captcha.html:105 +#: module/web/templates/default/captcha.html:34  msgid "Close"  msgstr "" diff --git a/locale/generate_locale.py b/locale/generate_locale.py deleted file mode 100644 index 15b3fcae0..000000000 --- a/locale/generate_locale.py +++ /dev/null @@ -1,111 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from os import walk, remove -from os.path import join -from subprocess import call - - -options = ["--from-code=utf-8", "--copyright-holder=pyLoad Team", "--package-name=pyLoad", "--package-version=0.4.9", -           "--msgid-bugs-address='bugs@pyload.org'"] - - -def po2pot(name): -    f = open("%s.po" % name, "rb") -    content = f.read() -    f.close() -    remove("%s.po" % name) -    content = content.replace("charset=CHARSET", "charset=UTF-8") - -    f = open("locale/%s.pot" % name, "wb") -    f.write(content) -    f.close() - -###### Core - -EXCLUDE = ["BeautifulSoup.py", "module/gui", "module/cli", "web/locale", "web/ajax", "web/cnl", "web/pyload", "setup.py"] -print "Generate core.pot" - -f = open("includes.txt", "wb") -f.write("./pyLoadCore.py\n") - -for path, dir, filenames in walk("./module"): -    if [True for x in EXCLUDE if x in path]: continue -    for file in filenames: -        if file.endswith(".py") and file not in EXCLUDE: -            f.write(join(path, file) + "\n") - -f.close() - -call(["xgettext", "--files-from=includes.txt", "--default-domain=core"] + options) -po2pot("core") - -########## GUI - -print "Generate gui.pot" - -EXCLUDE = [] - -f = open("includes.txt", "wb") -f.write("./pyLoadGui.py\n") - -for path, dir, filenames in walk("./module/gui"): -    if [True for x in EXCLUDE if x in path]: continue -    for file in filenames: -        if file.endswith(".py") and file not in EXCLUDE: -            f.write(join(path, file) + "\n") - -f.close() - -call(["xgettext", "--files-from=includes.txt", "--default-domain=gui"] + options) -po2pot("gui") - - -###### CLI - -print "Generate cli.pot" - -f = open("includes.txt", "wb") -f.write("./pyLoadCli.py\n") - -for path, dir, filenames in walk("./module/cli"): -    if [True for x in EXCLUDE if x in path]: continue -    for file in filenames: -        if file.endswith(".py") and file not in EXCLUDE: -            f.write(join(path, file) + "\n") - -f.close() - -call(["xgettext", "--files-from=includes.txt", "--default-domain=cli"] + options) -po2pot("cli") - -###### Setup - -print "Generate setup.pot" - -f = open("includes.txt", "wb") -f.write("./module/setup.py\n") -f.close() - -call(["xgettext", "--files-from=includes.txt", "--default-domain=setup"] + options) -po2pot("setup") - -### Web - -EXCLUDE = ["ServerThread.py", "web/media/"] -print "Generate django.pot (old name keeped)" - -f = open("includes.txt", "wb") -for path, dir, filenames in walk("./module/web"): -    if [True for x in EXCLUDE if x in path]: continue -    for file in filenames: -        if (file.endswith(".py") or file.endswith(".html") or file.endswith(".js") or file.endswith(".coffee")) and file not in EXCLUDE: -            f.write(join(path, file) + "\n") - -f.close() - -call(["xgettext", "--files-from=includes.txt", "--default-domain=django", "--language=Python"] + options) -po2pot("django") - -print -print "All finished." diff --git a/locale/gui.pot b/locale/gui.pot index 31a2c6332..46543363b 100644 --- a/locale/gui.pot +++ b/locale/gui.pot @@ -6,9 +6,9 @@  #, fuzzy  msgid ""  msgstr "" -"Project-Id-Version: pyLoad 0.4.8\n" +"Project-Id-Version: pyLoad 0.4.9\n"  "Report-Msgid-Bugs-To: 'bugs@pyload.org'\n" -"POT-Creation-Date: 2011-10-04 09:49+0200\n" +"POT-Creation-Date: 2011-10-11 18:59+0200\n"  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"  "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/locale/includes.txt b/locale/includes.txt deleted file mode 100644 index 5074704b1..000000000 --- a/locale/includes.txt +++ /dev/null @@ -1 +0,0 @@ -./pyLoadCore.py diff --git a/locale/setup.pot b/locale/setup.pot index 8c1c9328f..a593f002c 100644 --- a/locale/setup.pot +++ b/locale/setup.pot @@ -6,9 +6,9 @@  #, fuzzy  msgid ""  msgstr "" -"Project-Id-Version: pyLoad 0.4.8\n" +"Project-Id-Version: pyLoad 0.4.9\n"  "Report-Msgid-Bugs-To: 'bugs@pyload.org'\n" -"POT-Creation-Date: 2011-10-04 09:49+0200\n" +"POT-Creation-Date: 2011-10-11 18:59+0200\n"  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"  "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/module/plugins/hoster/OronCom.py b/module/plugins/hoster/OronCom.py index 778453aa2..7f09ea3a3 100644 --- a/module/plugins/hoster/OronCom.py +++ b/module/plugins/hoster/OronCom.py @@ -42,6 +42,7 @@ class OronCom(Hoster):      def init(self):          self.resumeDownload = self.multiDL = True if self.account else False +        self.chunkLimit = 1          self.file_id = re.search(r'http://(?:www.)?oron.com/([a-zA-Z0-9]+)', self.pyfile.url).group(1)          self.logDebug("File id is %s" % self.file_id)          self.pyfile.url = "http://oron.com/" + self.file_id diff --git a/module/remote/thriftbackend/generateThrift.sh b/module/remote/thriftbackend/generateThrift.sh deleted file mode 100755 index d7e0cb68a..000000000 --- a/module/remote/thriftbackend/generateThrift.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -rm -rf thriftgen - -# use thrift from trunk or a release with dynamic/slots python code generation - -thrift -v --strict --gen py:slots,dynamic --gen java pyload.thrift -mv gen-py thriftgen diff --git a/module/remote/thriftbackend/thriftgen/pyload/Pyload-remote b/module/remote/thriftbackend/thriftgen/pyload/Pyload-remote index 8c3390438..e2e56d5ca 100755 --- a/module/remote/thriftbackend/thriftgen/pyload/Pyload-remote +++ b/module/remote/thriftbackend/thriftgen/pyload/Pyload-remote @@ -20,7 +20,7 @@ from ttypes import *  if len(sys.argv) <= 1 or sys.argv[1] == '--help':    print '' -  print 'Usage: ' + sys.argv[0] + ' [-h host:port] [-u url] [-f[ramed]] function [arg1 [arg2...]]' +  print 'Usage: ' + sys.argv[0] + ' [-h host[:port]] [-u url] [-f[ramed]] function [arg1 [arg2...]]'    print ''    print 'Functions:'    print '  string getConfigValue(string category, string option, string section)' @@ -107,7 +107,8 @@ argi = 1  if sys.argv[argi] == '-h':    parts = sys.argv[argi+1].split(':')    host = parts[0] -  port = int(parts[1]) +  if len(parts) > 1: +    port = int(parts[1])    argi += 2  if sys.argv[argi] == '-u': diff --git a/module/remote/thriftbackend/thriftgen/pyload/Pyload.py b/module/remote/thriftbackend/thriftgen/pyload/Pyload.py index d54cfaedd..677e4afe2 100644 --- a/module/remote/thriftbackend/thriftgen/pyload/Pyload.py +++ b/module/remote/thriftbackend/thriftgen/pyload/Pyload.py @@ -6,7 +6,7 @@  #  options string: py:slots,dynamic  # -from thrift.Thrift import TType, TMessageType +from thrift.Thrift import TType, TMessageType, TException  from ttypes import *  from thrift.Thrift import TProcessor  from thrift.protocol.TBase import TBase, TExceptionBase, TApplicationException diff --git a/module/remote/thriftbackend/thriftgen/pyload/constants.py b/module/remote/thriftbackend/thriftgen/pyload/constants.py index 1ca9842ff..f5ef663f1 100644 --- a/module/remote/thriftbackend/thriftgen/pyload/constants.py +++ b/module/remote/thriftbackend/thriftgen/pyload/constants.py @@ -6,6 +6,6 @@  #  options string: py:slots,dynamic  # -from thrift.Thrift import TType, TMessageType +from thrift.Thrift import TType, TMessageType, TException  from ttypes import * diff --git a/module/remote/thriftbackend/thriftgen/pyload/ttypes.py b/module/remote/thriftbackend/thriftgen/pyload/ttypes.py index 204090577..626bd1c29 100644 --- a/module/remote/thriftbackend/thriftgen/pyload/ttypes.py +++ b/module/remote/thriftbackend/thriftgen/pyload/ttypes.py @@ -6,7 +6,7 @@  #  options string: py:slots,dynamic  # -from thrift.Thrift import TType, TMessageType +from thrift.Thrift import TType, TMessageType, TException  from thrift.protocol.TBase import TBase, TExceptionBase diff --git a/module/web/compile_js.sh b/module/web/compile_js.sh deleted file mode 100755 index 79adb1bed..000000000 --- a/module/web/compile_js.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -for file in media/js/*.coffee -do  -   echo "Compiling ${file}" -   cat ${file} | coffee -cbs | yuicompressor --type js > ${file/.coffee/.js} -done diff --git a/pavement.py b/pavement.py new file mode 100644 index 000000000..b7ece2bd4 --- /dev/null +++ b/pavement.py @@ -0,0 +1,276 @@ +# -*- coding: utf-8 -*- + + +from paver.easy import * +from paver.setuputils import setup + +import sys +import re +from urllib import urlretrieve +from subprocess import call, Popen, PIPE +from zipfile import ZipFile + +PROJECT_DIR = path(__file__).dirname() + +options = environment.options +path('pyload').mkdir() + +extradeps = [] +if sys.version_info <= (2, 5): +    extradeps += 'simplejson' + +setup( +    name="pyload", +    version="0.4.9", +    description='description', +    long_description='', +    keywords='', +    url="http://pyload.org", +    download_url='http://pyload.org/download', +    license='GPL v3', +    author="pyLoad Team", +    author_email="support@pyload.org", +    #package_dir={'pyload': 'src'}, +    packages=['pyload'], +    #package_data=find_package_data(), +    #data_files=[], +    include_package_data=True, +    exclude_package_data={'pyload': ['docs*', 'scripts*']}, +    #leaving out thrift 0.8.0 since its not statisfiable +    install_requires=['BeautifulSoup>=3.2, <3.3', 'jinja2', 'pycurl', 'Beaker', 'bottle >= 0.9.0'] + extradeps, +    extras_require={ +        'SSL': ["pyOpenSSL"], +        'DLC': ['pycrypto'], +        'lightweight webserver': ['bjoern'], +        'RSS plugins': ['feedparser'] +    }, +    #setup_requires=["setuptools_hg"], +    entry_points={ +        'console_scripts': [ +            'pyLoadCore = pyLoadCore:main_func', +            'pyLoadCli = pyLoadCli:some_func', ], +        'gui_scripts': [ +            'pyLoadGui = my_package_gui.start_func', +            ]}, +    zip_safe=False +) + +options( +    sphinx=Bunch( +        builddir="_build", +        sourcedir="" +    ), +    get_source=Bunch( +        src="https://bitbucket.org/spoob/pyload/get/tip.zip", +        rev=None, +        clean=False +    ), +    thrift=Bunch( +        path="../thrift/trunk/compiler/cpp/thrift", +        gen="" +    ) +) + +# xgettext args +xargs = ["--from-code=utf-8", "--copyright-holder=pyLoad Team", "--package-name=pyLoad", +         "--package-version=%s" % options.version, "--msgid-bugs-address='bugs@pyload.org'"] + +@task +def html(): +    """Build html documentation""" +    module = path("docs") / "module" +    module.rmtree() +    call_task('paver.doctools.html') + + +@task +@cmdopts([ +    ('src=', 's', 'Url to source'), +    ('rev=', 'r', "HG revision"), +    ("clean", 'c', 'Delete old source folder') +]) +def get_source(options): +    """ Downloads pyload source from bitbucket tip or given rev""" +    if options.rev: options.url = "https://bitbucket.org/spoob/pyload/get/%s.zip" % options.rev + +    pyload = path("pyload") + +    if len(pyload.listdir()) and not options.clean: +        return +    elif pyload.exists(): +        pyload.rmtree() + +    urlretrieve(options.src, "pyload_src.zip") +    zip = ZipFile("pyload_src.zip") +    zip.extractall() +    path("pyload_src.zip").remove() + +    folder = [x for x in path(".").dirs() if x.name.startswith("spoob-pyload-")][0] +    folder.move(pyload) + +    change_mode(pyload, 0644) +    change_mode(pyload, 0755, folder=True) + +    for file in pyload.files(): +        if file.name.endswith(".py"): +            file.chmod(0755) + +    (pyload / ".hgtags").remove() +    (pyload / ".hgignore").remove() +    #(pyload / "docs").rmtree() + +    f = open(pyload / "__init__.py", "wb") +    f.close() + +    #options.setup.packages = find_packages() +    #options.setup.package_data = find_package_data() + + +@task +@needs('clean', 'generate_setup', 'minilib', 'get_source', 'setuptools.command.sdist') +def sdist(): +    """ Build source code package with distutils """ + + +@task +@cmdopts([ +    ('path=', 'p', 'Thrift path'), +    ('gen=', 'g', "Extra --gen option") +]) +def thrift(options): +    """ Generate Thrift stubs """ + +    print "add import for TApplicationException manually as long it is not fixed" + +    outdir = path("module") / "remote" / "thriftbackend" +    (outdir / "gen-py").rmtree() + +    cmd = [options.thrift.path, "-strict", "-o", outdir, "--gen", "py:slots,dynamic", outdir / "pyload.thrift"] + +    if options.gen: +        cmd.insert(len(cmd) - 1, "--gen") +        cmd.insert(len(cmd) - 1, options.gen) + +    print "running", cmd + +    p = Popen(cmd) +    p.communicate() + +    (outdir / "thriftgen").rmtree() +    (outdir / "gen-py").move(outdir / "thriftgen") + + +@task +def compile_js(): +    """ Compile .coffee files to javascript""" + +    root = path("module") / "web" / "media" / "js" +    for f in root.glob("*.coffee"): +        coffee = Popen(["coffee", "-cbs"], stdin=open(f, "rb"), stdout=PIPE) +        yui = Popen(["yuicompressor", "--type", "js"], stdin=coffee.stdout, stdout=PIPE) +        coffee.stdout.close() +        content = yui.communicate()[0] +        with open(root / f.name.replace(".coffee", ".js"), "wb") as js: +            js.write(content) + + +@task +def generate_locale(): +    """ Generates localisation files """ + +    EXCLUDE = ["BeautifulSoup.py", "module/gui", "module/cli", "web/locale", "web/ajax", "web/cnl", "web/pyload", +               "setup.py"] +    makepot("core", path("module"), EXCLUDE, "./pyLoadCore.py\n") + +    makepot("gui", path("module") / "gui", [], includes="./pyLoadGui.py\n") +    makepot("cli", path("module") / "cli", [], includes="./pyLoadCli.py\n") +    makepot("setup", "", [], includes="./module/setup.py\n") + +    EXCLUDE = ["ServerThread.py", "web/media/default"] + +    # strings from js files +    strings = set() + +    for fi in path("module/web").walkfiles(): +        if not fi.name.endswith(".js") and not fi.endswith(".coffee"): continue +        with open(fi, "rb") as c: +            content = c.read() + +            strings.update(re.findall(r"_\s*\(\s*\"([^\"]+)", content)) +            strings.update(re.findall(r"_\s*\(\s*\'([^\']+)", content)) + +    trans = path("module") / "web" / "translations.js" + +    with open(trans, "wb") as js: +        for s in strings: +            js.write('_("%s")\n' % s) + +    makepot("django", path("module/web"), EXCLUDE, "./%s\n" % trans.relpath(), [".py", ".html"], ["--language=Python"]) + +    trans.remove() + +    path("includes.txt").remove() + +    print "Locale generated" + + +@task +def clean(): +    """Cleans build directories""" +    path("build").rmtree() +    path("dist").rmtree() + + +#helper functions + +def walk_trans(path, EXCLUDE, endings=[".py"]): +    result = "" + +    for f in path.walkfiles(): +        if [True for x in EXCLUDE if x in f.dirname().relpath()]: continue +        if f.name in EXCLUDE: continue + +        for e in endings: +            if f.name.endswith(e): +                result += "./%s\n" % f.relpath() +                break + +    return result + + +def makepot(domain, p, excludes=[], includes="", endings=[".py"], xxargs=[]): +    print "Generate %s.pot" % domain + +    f = open("includes.txt", "wb") +    if includes: +        f.write(includes) + +    if p: +        f.write(walk_trans(path(p), excludes, endings)) + +    f.close() + +    call(["xgettext", "--files-from=includes.txt", "--default-domain=%s" % domain] + xargs + xxargs) + +    # replace charset und move file +    with open("%s.po" % domain, "rb") as f: +        content = f.read() + +    path("%s.po" % domain).remove() +    content = content.replace("charset=CHARSET", "charset=UTF-8") + +    with open("locale/%s.pot" % domain, "wb") as f: +        f.write(content) + + +def change_owner(dir, uid, gid): +    for p in dir.walk(): +        p.chown(uid, gid) + + +def change_mode(dir, mode, folder=False): +    for p in dir.walk(): +        if folder and p.isdir(): +            p.chmod(mode) +        elif p.isfile() and not folder: +            p.chmod(mode) | 
