Hi Deshani,

Thanks for the contribution!  Would you mind going to
https://forge-allura.apache.org/p/allura/git/ and doing a fork and merge request
there?  Allura does its own hosting and we prefer to use that.  The GitHub repo
is just a mirror.

Thanks,

On 3/18/18 5:24 AM, Deshani Geethika wrote:
> Hi all,
> 
> I've added the functionality for bulk delete tickets and created a pull
> request - https://github.com/apache/allura/pull/2
> 
> Please review it and provide me any suggestions.
> 
> Regards!
> 
> On Sun, Mar 18, 2018 at 10:52 AM, Deshani Geethika <
> deshanigeeth...@gmail.com> wrote:
> 
>> Hi Dave,
>>
>> Thank you for the information. I'll try it again and let you know
>>
>> Regards!
>> Deshani
>>
>> On Fri, Mar 16, 2018 at 2:52 AM, Dave Brondsema <d...@brondsema.net>
>> wrote:
>>
>>> Hi,
>>>
>>> Your changes look ok just reading them.  What happens when you try it?
>>> Do you
>>> get any error?
>>>
>>> One thought is that bulk edit happens as a background task (because
>>> updating
>>> hundreds of tickets could take some time).  Specifically @task bulk_edit
>>> is what
>>> calls Globals.update_tickets  So make sure you have taskd running.  And
>>> if it is
>>> running, check to see if bulk_edit task runs and if it has any errors.
>>>
>>> Hope that helps,
>>>
>>> On 3/15/18 9:22 AM, Deshani Geethika wrote:
>>>> Hi all,
>>>>
>>>> During last few days, I’ve been playing with Allura code-base and
>>> started
>>>> to work on the issue #8149 Bulk Delete for tickets (
>>>> https://forge-allura.apache.org/p/allura/tickets/8149/)
>>>>
>>>> I have modified the file
>>>> ‘ForgeTracker/forgetracker/templates/tracker_widgets/mass_
>>> edit_form.html’
>>>> and added the following set of lines, which is similar to ‘Private’
>>> field
>>>> with just boolean values.
>>>>
>>>> ………...
>>>>
>>>> <div class="grid-6">
>>>>
>>>>      <label for="deleted" class="cr">Delete:</label>
>>>>
>>>>      <select name="deleted" id="deleted">
>>>>
>>>>            <option value="" selected="selected">Don't change</option>
>>>>
>>>>            <option value="True">True</option>
>>>>
>>>>            <option value="False">False</option>
>>>>
>>>>      </select>
>>>>
>>>> </div>
>>>>
>>>> ………...
>>>>
>>>> Then, in ‘model/ticket.py’, class ‘Globals’, method ‘update_tickets’, I
>>>> have added following set of lines.
>>>>
>>>> ……...
>>>>
>>>> private = post_data.get('private')
>>>>
>>>> if private:
>>>>
>>>>        values['private'] = asbool(private)
>>>>
>>>> deleted = post_data.get('deleted')
>>>>
>>>> if deleted:
>>>>
>>>> values['deleted'] = asbool(deleted)
>>>>
>>>> ……...
>>>>
>>>> Here, the value of ‘deleted’, which is submitted from
>>> ‘mass_edit_form.html’
>>>> is read and saved to ‘values’ dictionary.
>>>>
>>>> Then in the same method, as far as I understood, I have to add the
>>>> functionality for mass delete. Also, I’ve found out the ‘delete’ method
>>>> which is implemented to delete a single ticket in
>>>> ‘ForgeTracker/forgetracker/tracker_main.py’
>>>> class.
>>>>
>>>> Therefore, I have imported the ‘delete’ method from above class, and use
>>>> that method directly to delete tickets one by one (inside the tickets
>>> loop)
>>>> as below. I’ve assumed that, if a user needs to delete tickets, then
>>> other
>>>> fields (Private, Owner, Discussion Disabled etc.) are not required to be
>>>> modified. So that, if a ticket is deleted, the loop breaks without
>>> further
>>>> modifying the ticket.
>>>>
>>>> …..
>>>>
>>>> def update_tickets(self, **post_data):
>>>>
>>>>        from forgetracker.tracker_main import get_change_text, get_label,
>>>> delete
>>>>
>>>> ……….
>>>>
>>>> for ticket in tickets:
>>>>
>>>>   message = ''
>>>>
>>>>   if labels:
>>>>
>>>>         values['labels'] = self.append_new_labels(
>>>>
>>>>             ticket.labels, labels.split(','))
>>>>
>>>>        for k, v in sorted(values.iteritems()):
>>>>
>>>>        if k == 'deleted':
>>>>
>>>>                  if v:
>>>>
>>>>                  ticket.delete()
>>>>
>>>>             break
>>>>
>>>>            elif k == 'assigned_to_id':
>>>>
>>>>                    new_user = User.query.get(_id=v)
>>>>
>>>>                    old_user = User.query.get(_id=getattr(ticket, k))
>>>>
>>>>                    if new_user:
>>>>
>>>>                        message += get_change_text(
>>>>
>>>>                                get_label(k),
>>>>
>>>>                                new_user.display_name,
>>>>
>>>>                                old_user.display_name)
>>>>
>>>>
>>>>
>>>>            elif k == 'private' or k == 'discussion_disabled':
>>>>
>>>>                 def _text(val):
>>>>
>>>>                        if val:
>>>>
>>>>                            return 'Yes'
>>>>
>>>>                        else:
>>>>
>>>>                            return 'No'
>>>>
>>>>            message += get_change_text(
>>>>
>>>>                        get_label(k),
>>>>
>>>>                        _text(v),
>>>>
>>>>                        _text(getattr(ticket, k)))
>>>>
>>>>            else:
>>>>
>>>>                  message += get_change_text(
>>>>
>>>>                            get_label(k),
>>>>
>>>> v,getattr(ticket, k))
>>>>
>>>> setattr(ticket, k, v)
>>>>
>>>> ……….
>>>>
>>>> But, the mass delete functionality is not working and I’m not sure
>>> whether
>>>> I’m on the right path. Could you help me to solve this issue.
>>>>
>>>> Regards!
>>>>
>>>> Deshani
>>>>
>>>> On Fri, Mar 9, 2018 at 10:46 PM, Deshani Geethika <
>>> deshanigeeth...@gmail.com
>>>>> wrote:
>>>>
>>>>> Hi Dave,
>>>>>
>>>>> Thank you for your guidance. I'll get back if I get anything to be
>>>>> clarified
>>>>>
>>>>> Regards!
>>>>> -Deshani
>>>>>
>>>>> On Fri, Mar 9, 2018 at 9:55 PM, Dave Brondsema <d...@brondsema.net>
>>> wrote:
>>>>>
>>>>>> Hi Deshani,
>>>>>>
>>>>>> Welcome!  Sounds like you're off to a good start.  I would suggest
>>> getting
>>>>>> familiar with the codebase of Allura would be a good next step.
>>>>>> https://forge-allura.apache.org/docs/development/contributing.html
>>>>>> explains some
>>>>>> of the basics and is a good read.  If there are small changes you
>>> want to
>>>>>> make
>>>>>> (whether related to a larger GSoC task or not) you could try to make
>>>>>> them.  Feel
>>>>>> free to ask for help here, or if you make a small fix or improvement,
>>> go
>>>>>> ahead
>>>>>> and submit a merge request :)
>>>>>>
>>>>>> -Dave
>>>>>>
>>>>>> On 3/9/18 12:48 AM, deshanigeeth...@gmail.com wrote:
>>>>>>> Hi all,
>>>>>>>
>>>>>>> I’m Deshani Geethika, a final year undergraduate at Department of
>>>>>> Computer Science and Engineering, University of Moratuwa, Sri Lanka. I
>>>>>> would like to participate in GSoC 2018 and I found out some
>>> interesting
>>>>>> projects of Apache Allura.
>>>>>>>
>>>>>>> I have gone through the documentation and set up Allura in my local
>>>>>> machine. Also, I wrote a blog article (https://medium.com/@deshanige
>>>>>> ethika/in-progress-setting-up-apache-allura-in-ubuntu-1fa166406448)
>>>>>> about setting up Allura.
>>>>>>>
>>>>>>> Since I’m new to this community, it is really appreciated if
>>> anyone
>>>>>> suggest me a way to begin contributing to Allura.
>>>>>>>
>>>>>>> Regards!
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Dave Brondsema : d...@brondsema.net
>>>>>> http://www.brondsema.net : personal
>>>>>> http://www.splike.com : programming
>>>>>>               <><
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Dave Brondsema : d...@brondsema.net
>>> http://www.brondsema.net : personal
>>> http://www.splike.com : programming
>>>               <><
>>>
>>
>>
> 
> 



-- 
Dave Brondsema : d...@brondsema.net
http://www.brondsema.net : personal
http://www.splike.com : programming
              <><

Reply via email to