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
>>               <><
>>
>
>


-- 
*Deshani Geethika*
Undergraduate at Department of Computer Science and Engineering
Faculty of Engineering - University of Moratuwa Sri Lanka
LinkedIn <https://www.linkedin.com/in/deshanigeethika/> | GitHub
<https://github.com/deshanigtk> | Mobile - +94776383034

Reply via email to