Hi Christian,
Here is the core of the extension. The `model` and `uri_object_key` issues
are due to the resources.review.get_object() request. Maybe I should be
going directly to the database model instead of going through the webapi?
class SampleExtensionResource(WebAPIResource):
"""Resource for review voting"""
name = 'ballot_box'
uri_name = 'ballot_box'
allowed_methods = ('POST')
def has_access_permissions(self, request, *args, **kwargs):
return review_request.is_accessible_by(request.user)
def create(self, request, *args, **kwargs):
try:
# v--- problem is there
review = resources.review.get_object(request, *args, **kwargs)
except ObjectDoesNotExist:
# TODO - need to return a proper failure message here
return HttpResponse("Unable to lookup review")
if not resources.review.has_modify_permissions(request, review):
return self.get_no_access_error(request.user)
comment_kwargs = {
'body_top_text_type': 'plain',
'body_bottom': '', 'body_bottom_text_type': 'plain',
'public': 1,
'ship_it': True,
'body_top': "TODO - Add real comment here"
}
new_comment = self.create_comment(fields=(), review=review, **
comment_kwargs)
review.general_comments.add(new_comment)
# TODO - probably need a json response
response = "OK"
return HttpResponse(response)
Regards,
Eric
On Friday, May 6, 2016 at 10:07:31 PM UTC+12, Christian Hammond wrote:
>
> Hi Eric,
>
> The `model` and `uri_object_key` are configurations for a resource's
> implementation, and aren't related to the data provided by the caller.
>
> The `model` attribute is optionally used to associate a WebAPIResource
> subclass with a particular database model. If set, many of the operations
> (GET requests to lists or to objects, DELETEs, etc.) are implemented for
> you, but otherwise, you have to implement those yourself (by overriding
> get(), get_list(), delete(), etc.).
>
> `uri_object_key` defines the name of the capture group in the URL's regex
> that captures the iD used to look up the appropriate object (defined by
> `model`) in the database.
>
> You don't need to do anything with Backbone to make use of the API. a
> $.post() should be fine. However, it sounds like maybe the WebAPIResource
> isn't implemented fully.
>
> Can you show me the code you've written, how you're calling into the API,
> and what the results are when you do so? We can help you write the
> WebAPIResource to do what you need.
>
> Christian
>
> --
> Christian Hammond
> President/CEO of Beanbag <https://www.beanbaginc.com/>
> Makers of Review Board <https://www.reviewboard.org/>
>
> On Wed, May 4, 2016 at 9:04 PM, Eric Holmberg <[email protected]
> <javascript:>> wrote:
>
>> I have created a WebAPIResource extension based upon the instructions in
>> https://www.reviewboard.org/docs/manual/2.0/extending/extensions/webapi/
>> which is called based upon the user clicking on a menu item which was
>> created by ReviewRequestDropdownActionHook.
>>
>> How do I actually do the POST call?
>>
>> I tried just the usual jQuery $.post(...), but djblets/webapi/
>> resources.base.py tries to get the "model" and "uri_object_keys" and
>> fails since they are not part of the post data. It looks like I need to
>> create a view and model by deriving from Backbone.View.extend
>> Backbone.Model.extend,
>> but I haven't found any concise examples that I can understand well enough
>> to use as a template.
>>
>> My use case:
>>
>> 1. Based upon a UI event, post to the WebAPIResource
>> 2. In the WebAPIResource.create method:
>> 1. Lookup current review, post a comment based upon the approval
>> request (similar to a ship-it comment)
>> 2. Log vote into a new database model
>> 3. Query the existing votes and if everything looks good, trigger
>> a merge of the change or rejection email
>>
>>
>> Note that I'm not a Javascript or web programmer since my background is
>> C++ and Python, so I'm sorry if my question is elementary.
>>
>> Regards,
>> Eric
>>
>>
>>
>>
>> --
>> Supercharge your Review Board with Power Pack:
>> https://www.reviewboard.org/powerpack/
>> Want us to host Review Board for you? Check out RBCommons:
>> https://rbcommons.com/
>> Happy user? Let us know! https://www.reviewboard.org/users/
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "reviewboard" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
--
Supercharge your Review Board with Power Pack:
https://www.reviewboard.org/powerpack/
Want us to host Review Board for you? Check out RBCommons:
https://rbcommons.com/
Happy user? Let us know! https://www.reviewboard.org/users/
---
You received this message because you are subscribed to the Google Groups
"reviewboard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.