[rfdoc] 2 new revisions pushed by janne.piironen@gmail.com on 2014-03-26 21:12 GMT

7 views
Skip to first unread message

codesite...@google.com

unread,
Mar 26, 2014, 5:13:21 PM3/26/14
to rfdoc-...@googlegroups.com
2 new revisions:

Revision: 41eceba780ee
Branch: default
Author: Janne Piironen <janne.p...@gmail.com>
Date: Wed Mar 26 21:07:59 2014 UTC
Log: Implemented library name override in uploader. Changed library
upload ...
http://code.google.com/p/rfdoc/source/detail?r=41eceba780ee

Revision: 919b752deaf4
Branch: default
Author: Janne Piironen <janne.p...@gmail.com>
Date: Wed Mar 26 21:11:37 2014 UTC
Log: Implemented library name override possibility to web UI....
http://code.google.com/p/rfdoc/source/detail?r=919b752deaf4

==============================================================================
Revision: 41eceba780ee
Branch: default
Author: Janne Piironen <janne.p...@gmail.com>
Date: Wed Mar 26 21:07:59 2014 UTC
Log: Implemented library name override in uploader. Changed library
upload to post override name and version instead of manipulating them
before posting.

Update issue 27
Status: Done

upload.py now accepts option -n or --name for overriding the name of the
library to be uploaded.
http://code.google.com/p/rfdoc/source/detail?r=41eceba780ee

Modified:
/atest/resources/rfdoc.txt
/atest/uploader.txt
/src/rfdoc/rfdocapp/views/upload.py
/src/rfdoc/upload.py

=======================================
--- /atest/resources/rfdoc.txt Thu Feb 27 12:11:32 2014 UTC
+++ /atest/resources/rfdoc.txt Wed Mar 26 21:07:59 2014 UTC
@@ -14,6 +14,7 @@
@{EXAMPLELIBRARY VERSION 1 KEYWORDS} First Keyword first,
second=default, *args First KW doc My Second Keyword some Second KW doc
@{EXAMPLELIBRARY VERSION 2 KEYWORDS} First Keyword Updated first,
second=default updated, *args Updated KW doc My Second Keyword some
Second KW doc Third Keyword third Third KW doc
@{EXAMPLELIBRARY VERSION 5 KEYWORDS} @{EXAMPLELIBRARY VERSION 1 KEYWORDS}
+@{NEWNAMELIBRARY VERSION 2 KEYWORDS} @{EXAMPLELIBRARY VERSION 2 KEYWORDS}

*** Keywords ***
Given no libraries exist in RFDoc
=======================================
--- /atest/uploader.txt Fri Feb 28 11:01:17 2014 UTC
+++ /atest/uploader.txt Wed Mar 26 21:07:59 2014 UTC
@@ -42,7 +42,7 @@
Should Exit With 0

With new version
- [Setup] Given SeleniumLibrary exist in RFDoc
+ [Setup] Given some libraries exist in RFDoc
Run Keyword And Expect Error * RFDoc contains versioned library
ExampleLibrary version 2
${rc} ${output}= Run With -u ${BASE URL} ${EXAMPLE LIBRARY XML V2}
Should Print ${EXAMPLE LIBRARY XML V2} Updated
@@ -50,6 +50,22 @@
RFDoc contains versioned library ExampleLibrary version 2
Should Exit With 0

+With version override
+ [Setup] Given no libraries exist in RFDoc
+ Run Keyword And Expect Error * RFDoc contains versioned library
ExampleLibrary version 5
+ ${rc} ${output}= Run With -u ${BASE URL} -v 5 ${EXAMPLE LIBRARY XML
V1}
+ Should Print ${EXAMPLE LIBRARY XML V1} Updated
+ RFDoc contains versioned library ExampleLibrary version 5
+ Should Exit With 0
+
+With name override
+ [Setup] Given no libraries exist in RFDoc
+ Run Keyword And Expect Error * RFDoc contains versioned library
ExampleLibrary version 5
+ ${rc} ${output}= Run With -u ${BASE URL} -n NewnameLibrary ${EXAMPLE
LIBRARY XML V2}
+ Should Print ${EXAMPLE LIBRARY XML V2} Updated
+ RFDoc contains versioned library NewnameLibrary version 2
+ Should Exit With 0
+
With invalid arguments
${invalid_argument}= Set Variable --invalid
${rc} ${output}= Run With ${invalid_argument}
=======================================
--- /src/rfdoc/rfdocapp/views/upload.py Fri Feb 28 09:07:25 2014 UTC
+++ /src/rfdoc/rfdocapp/views/upload.py Wed Mar 26 21:07:59 2014 UTC
@@ -27,6 +27,7 @@
if form.is_valid():
lib = form.parse_kw_spec(request.FILES['file'],
form.cleaned_data['override'],
+
form.cleaned_data['override_name'].strip(),

form.cleaned_data['override_version'].strip())
else:
form = UploadFileForm()
@@ -44,11 +45,13 @@
override_version = forms.CharField(required=False)
override_version.widget.attrs['size'] = 10

- def parse_kw_spec(self, fileobj, override, override_version):
+ def parse_kw_spec(self, fileobj, override, override_name,
override_version):
try:
libdata = LibraryData(fileobj)
if override_version:
- libdata.version=override_version
+ libdata.version = override_version
+ if override_name:
+ libdata.name = override_name
if
Library.objects.filter(name=libdata.name).filter(version=libdata.version):
if not override:
raise InvalidXmlError("Library %s version %s already
exists." % (libdata.name, libdata.version))
=======================================
--- /src/rfdoc/upload.py Fri Feb 28 11:01:17 2014 UTC
+++ /src/rfdoc/upload.py Wed Mar 26 21:07:59 2014 UTC
@@ -53,17 +53,14 @@
xml_doc.write(xml_file.read())
else:
xml_doc.close = lambda: None
- if self._options.lib_version:
- LibraryDocumentation(library,
version=self._options.lib_version).save(xml_doc, 'xml')
- else:
-
LibraryDocumentation(library).save(xml_doc, 'xml')
+
LibraryDocumentation(library).save(xml_doc, 'xml')
except DataError, e:
message = "Library not found" if 'ImportError' in
e.message else e.message
sys.stderr.write("Skipping '%s' due to an
error: %s.\n" %
(library, message))
continue
xml_doc.name = library
- self._uploader.upload_file(xml_doc)
+ self._uploader.upload_file(xml_doc,
self._options.lib_name, self._options.lib_version)
sys.stdout.write("Updated documentation for '%s'.\n" %
library)
finally:
xml_doc.original_close()
@@ -128,6 +125,10 @@
def lib_version(self):
return self._options.lib_version

+ @property
+ def lib_name(self):
+ return self._options.lib_name
+
def _add_commandline_options(self):
self._parser.add_option(
'-u', '--url',
@@ -140,7 +141,13 @@
self._parser.add_option(
'-v', '--version',
dest='lib_version',
+ default=None,
help="""Override library version""")
+ self._parser.add_option(
+ '-n', '--name',
+ dest='lib_name',
+ default=None,
+ help="""Override library name""")

def _get_validated_options(self):
options, targets = self._parser.parse_args()
@@ -184,7 +191,7 @@

class XmlUploader(object):
default_endpoint = 'upload'
- body_template = """--%(boundary)s
+ required_content_template = """--%(boundary)s
Content-Disposition: form-data; name="override"

on
@@ -193,16 +200,21 @@
Content-Type: text/xml

%(content)s
---%(boundary)s--
"""
+ optional_field_template = """--%(boundary)s
+Content-Disposition: form-data; name="%(name)s"
+
+%(content)s
+"""
+ end_boundary_template = '--%(boundary)s--\n'

def __init__(self, target_url):
self.url = urlsplit(target_url)

- def upload_file(self, xml_doc):
+ def upload_file(self, xml_doc, override_name=None,
override_version=None):
with closing(HTTPConnection(self.url.netloc)) as connection:
try:
- response = self._post_multipart(connection, xml_doc)
+ response = self._post_multipart(connection, xml_doc,
override_name, override_version)
except Exception, message:
if 'Connection refused' in message:
message = "connection refused to '%s', " %
self.url.netloc
@@ -210,9 +222,9 @@
raise DataError(message)
self._validate_success(response)

- def _post_multipart(self, connection, xml_doc):
+ def _post_multipart(self, connection, xml_doc, override_name,
override_version):
connection.connect()
- content_type, body = self._encode_multipart_formdata(xml_doc)
+ content_type, body = self._encode_multipart_formdata(xml_doc,
override_name, override_version)
headers = {'User-Agent': 'RFDoc uploader', 'Content-Type':
content_type}
connection.request('POST', self._get_endpoint(), body, headers)
return connection.getresponse()
@@ -220,13 +232,27 @@
def _get_endpoint(self):
return self.url.path + '/' + self.default_endpoint

- def _encode_multipart_formdata(self, xml_doc):
+ def _encode_multipart_formdata(self, xml_doc, override_name,
override_version):
boundary = '----------ThIs_Is_tHe_bouNdaRY_$'
- body = self.body_template % {
+ body = self.required_content_template % {
'boundary': boundary,
'filename': xml_doc.name,
'content': xml_doc.getvalue()
}
+ if override_name:
+ body += self.optional_field_template % {
+ 'boundary': boundary,
+ 'name': 'override_name',
+ 'content': override_name
+ }
+ if override_version:
+ body += self.optional_field_template % {
+ 'boundary': boundary,
+ 'name': 'override_version',
+ 'content': override_version
+ }
+
+ body += self.end_boundary_template % {'boundary': boundary}
content_type = 'multipart/form-data; boundary=%s' % boundary
return content_type, body.replace('\n', '\r\n')


==============================================================================
Revision: 919b752deaf4
Branch: default
Author: Janne Piironen <janne.p...@gmail.com>
Date: Wed Mar 26 21:11:37 2014 UTC
Log: Implemented library name override possibility to web UI.

Update issue 28
Status: Done

The upload form in web UI now has a text input for overriding the name of
the library to be uploaded. If the field is left empty the original name
will be kept.
http://code.google.com/p/rfdoc/source/detail?r=919b752deaf4

Modified:
/atest/resources/rfdoc.txt
/atest/upload_documentation.txt
/src/rfdoc/rfdocapp/templates/upload.html
/src/rfdoc/rfdocapp/views/upload.py

=======================================
--- /atest/resources/rfdoc.txt Wed Mar 26 21:07:59 2014 UTC
+++ /atest/resources/rfdoc.txt Wed Mar 26 21:11:37 2014 UTC
@@ -65,6 +65,11 @@
${file} = Set Variable ${library.replace(' ', '_')}.xml
Input text override_version ${version}
Upload ${file}
+
+User overrides name with "${name}" and uploads "${library}"
+ ${file} = Set Variable ${library.replace(' ', '_')}.xml
+ Input text override_name ${name}
+ Upload ${file}

Upload ${file}
Choose File file ${TESTDATA PATH}${/}xmls${/}${file}
=======================================
--- /atest/upload_documentation.txt Thu Feb 27 12:11:32 2014 UTC
+++ /atest/upload_documentation.txt Wed Mar 26 21:11:37 2014 UTC
@@ -16,3 +16,10 @@
Then notification "Successfully uploaded library ExampleLibrary" is
shown
and notification contains a version "5" link to "ExampleLibrary"
and RFDoc contains versioned library ExampleLibrary version 5
+
+User Can Upload Library Documentation And Override Name
+ "upload" page is open
+ When user overrides name with "NewnameLibrary" and
uploads "ExampleLibrary version 2"
+ Then notification "Successfully uploaded library NewnameLibrary" is
shown
+ and notification contains a version "2" link to "NewnameLibrary"
+ and RFDoc contains versioned library NewnameLibrary version 2
=======================================
--- /src/rfdoc/rfdocapp/templates/upload.html Thu Feb 27 12:11:32 2014 UTC
+++ /src/rfdoc/rfdocapp/templates/upload.html Wed Mar 26 21:11:37 2014 UTC
@@ -22,11 +22,15 @@
<div class="form-options">
<table>
<tr>
+ <td><label for="id_override_name">Overwrite library name
with:</label></td>
+ <td>{{ form.override_name }}</td>
+ </tr>
+ <tr>
<td><label for="id_override_version">Overwrite library
version with:</label></td>
<td>{{ form.override_version }}</td>
</tr>
<tr>
- <td><label for="id_override">Overwrite existing
documentation with same name</label></td>
+ <td><label for="id_override">Overwrite existing
documentation with same name and version</label></td>
<td>{{ form.override }}</td>
</tr>
</table>
=======================================
--- /src/rfdoc/rfdocapp/views/upload.py Wed Mar 26 21:07:59 2014 UTC
+++ /src/rfdoc/rfdocapp/views/upload.py Wed Mar 26 21:11:37 2014 UTC
@@ -42,6 +42,7 @@
file = forms.FileField()
file.widget.attrs['size'] = 40
override = forms.BooleanField(required=False)
+ override_name = forms.CharField(required=False)
override_version = forms.CharField(required=False)
override_version.widget.attrs['size'] = 10

Reply all
Reply to author
Forward
0 new messages