Navigation Menu

Skip to content
This repository has been archived by the owner on Jan 12, 2022. It is now read-only.

Commit

Permalink
Merge pull request #148 from zalun/bug-743607-add_jid_change_feature
Browse files Browse the repository at this point in the history
JID changing feature implemented
  • Loading branch information
zalun committed Jul 12, 2012
2 parents 96d792f + 042ecc8 commit d386b19
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 12 deletions.
26 changes: 15 additions & 11 deletions apps/jetpack/templates/_edit_package_info.html
Expand Up @@ -3,22 +3,26 @@ <h3>Edit #{full_name} info</h3>
<fieldset>
<label class="UI_Field">
<span>{{ revision.package.get_type_name_with_dash()|capfirst }} Name</span>
<input type="text" name="full_name" id="full_name" class="validate-alphanum_plus_space" value="#{full_name}"/>
<input type="text" name="full_name" id="full_name" class="validate-alphanum_plus_space" value="#{full_name}"/>
</label>
<label class="UI_Field">
<span>{{ revision.package.get_type_name_with_dash()|capfirst }} Description</span>
<textarea id="package_description" name="package_description" rows="8" cols="40">{{ revision.package.description }}</textarea>
</label>
<label class="UI_Field">
<span>Visibility</span>
<ul class="UI_Actions">
{% include "_package_privacy_toggle.html" %}
</ul>
</label>
<label class="UI_Field ace_editor_container">
<span>Extra package.json Properties</span>
<textarea id="package_extra_json" name="package_extra_json" rows="8" cols="40">{{revision.extra_json}}</textarea>
</label>
<label class="UI_Field">
<span>Visibility</span>
<ul class="UI_Actions">
{% include "_package_privacy_toggle.html" %}
</ul>
</label>
<label class="UI_Field ace_editor_container">
<span>Extra package.json Properties</span>
<textarea id="package_extra_json" name="package_extra_json" rows="8" cols="40">{{revision.extra_json}}</textarea>
</label>
<label class="UI_Field">
<span>JID</span>
<input type="text" name="jid" id="jid" class="validate-alphanum" value="#{jid}"/>
</label>
</fieldset>
<div class="UI_Modal_Actions">
<ul>
Expand Down
1 change: 1 addition & 0 deletions apps/jetpack/templates/js/_package_initiate.js
Expand Up @@ -5,6 +5,7 @@ latest_url: '{{ revision.package.get_latest_url() }}',
id_number: '{{ revision.package.id_number|escapejs }}',
full_name: '{{ revision.package.full_name|escapejs }}',
name: '{{ revision.package.name|escapejs }}',
jid: '{{ revision.package.jid|escapejs }}',
revision_string: '{{ revision|escapejs }}',
// description: '',
type: '{{ revision.package.type }}',
Expand Down
19 changes: 19 additions & 0 deletions apps/jetpack/tests/test_views.py
Expand Up @@ -270,6 +270,25 @@ def test_package_name_change(self):
eq_(addon2.full_name, addon2.latest.full_name)
assert rev1.name != addon2.latest.name

def test_package_jid_change(self):
jid = 'somejid'
author = self._login()
addon1 = Package(author=author, type='a')
addon1.save()
response = self.client.post(addon1.latest.get_save_url(), {
'jid': jid})
eq_(response.status_code, 200)
addon2 = Package.objects.get(pk=addon1.pk)
# no change in revision
eq_(len(addon2.revisions.all()), 1)
eq_(addon2.jid, jid)
# check adding an existing JID
addon3 = Package(author=author, type='a')
addon3.save()
response = self.client.post(addon1.latest.get_save_url(), {
'jid': jid})
eq_(response.status_code, 403)

def test_package_extra_json_change(self):
author = self._login()
addon = Package(author=author, type='a')
Expand Down
18 changes: 18 additions & 0 deletions apps/jetpack/views.py
Expand Up @@ -869,10 +869,16 @@ def save(request, id_number, type_id, revision_number=None,
response_data = {}

package_full_name = request.POST.get('full_name', False)
jid = request.POST.get('jid', None)
version_name = request.POST.get('version_name', False)

# validate package_full_name and version_name

if jid and not validator.is_valid(
'alphanum_plus', jid):
return HttpResponseForbidden(escape(
validator.get_validation_message('alphanum_plus')))

if version_name and not validator.is_valid(
'alphanum_plus', version_name):
return HttpResponseForbidden(escape(
Expand Down Expand Up @@ -959,6 +965,18 @@ def save(request, id_number, type_id, revision_number=None,
except Exception, err:
return HttpResponseForbidden(escape(err.__str__()))

if jid:
try:
Package.objects.get(jid=jid)
except Package.DoesNotExist:
pass
else:
return HttpResponseForbidden(('Package with JID "%s" already '
'exists in the Builder') % jid)
revision.package.jid = jid
response_data['jid'] = jid
save_package = True

if save_package:
revision.package.save()
response_data['name'] = revision.package.name
Expand Down
7 changes: 6 additions & 1 deletion media/jetpack/js/ide/controllers/PackageController.js
Expand Up @@ -52,7 +52,8 @@ module.exports = new Class({
package_info_form_elements: [
'full_name',
'package_description',
'package_extra_json'
'package_extra_json',
'jid'
],

check_dependencies: true,
Expand Down Expand Up @@ -1515,6 +1516,10 @@ module.exports = new Class({
var response = JSON.parse(text);
// set the redirect data to view_url of the new revision
log.debug('Save succeeded');
if (response.jid) {
this.package_.set('jid', response.jid);
this.options.jid = response.jid;
}
if (response.full_name) {
this.packageInfoNameEl.set('text', response.full_name);
this.options.full_name = response.full_name;
Expand Down
1 change: 1 addition & 0 deletions media/jetpack/js/ide/models/Package.js
Expand Up @@ -22,6 +22,7 @@ var Package = module.exports = new Class({
id_number: fields.NumberField(), // the real PK?
full_name: fields.TextField(),
name: fields.TextField(),
jid: fields.TextField(),
description: fields.TextField(),
type: fields.TextField(), //ChoiceField({ choices: ['a', 'l'] })
author: fields.TextField(),
Expand Down

0 comments on commit d386b19

Please sign in to comment.