Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to make correct revert to specific version? #635

Closed
nurzhannogerbek opened this issue Mar 31, 2017 · 2 comments
Closed

How to make correct revert to specific version? #635

nurzhannogerbek opened this issue Mar 31, 2017 · 2 comments
Labels

Comments

@nurzhannogerbek
Copy link

I have 2 question cause little bit comfused. I have page where users can see list all of reversions. Every version has button to revert.

1 Question: How to show only some fields of changes. Right now it shows me all fields. I use version.field_dict.items.
2 Question: How to make correct revert to specific version?

Here below you can see code but it raise Error in views.py when I try to click to revert link. What I did wrong?

template.html

{% for version in versions %}
       {% for field_name, field_value in version.field_dict.items %}
             {{ field_name }}
             {{ field_value }}
       {% endfor %}
       <a href="{% url 'project:group_task_revert' project_code=project.code group_task_code=group_task.code group_task_reversion_id=version.revision.id%}">REVERT</a>
{% endfor %}

urls.py:

 url(r'^(?P<project_code>[0-9a-f-]+)/(?P<group_code>[0-9a-f-]+)/(?P<group_reversion_id>\d+)/$',
        group_revert,
        name='group_revert'),

views.py:

def group_revert(request, project_code, group_code, group_reversion_id):
    project = get_object_or_404(Project, pk=project_code, status='open')
    group = get_object_or_404(Group, pk=group_code)

    versions = Version.objects.get_for_object(group)
    versions[group_reversion_id].revision.revert()

    return redirect('project:project_detail', project_code=project.code)

ERROR:

Internal Server Error: /ru/account/dashboard/projects/42442299-97dd-4d92-9ef1-880f9cdd1612/4d3d3422-2618-4d66-96f5-8f0a0b5d9bf3/21/
Traceback (most recent call last):
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\exception.py", line 39, in inner
    response = get_response(request)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Nurzhan\PycharmProjects\RMS\project\views.py", line 198, in group_revert
    versions[group_reversion_id].revision.revert()
  File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\db\models\query.py", line 271, in __getitem__
    raise TypeError
TypeError
@etianen
Copy link
Owner

etianen commented Mar 31, 2017

Try this:

template.html

Updated to only show fields "foo" and "bar"

{% for version in versions %}
       {% for field_name, field_value in version.field_dict.items %}
             {% if field_name == "foo" or field_name== "bar" %}
                 {{ field_name }}
                 {{ field_value }}
             {% endif %}
       {% endfor %}
       <a href="{% url 'project:group_task_revert' project_code=project.code group_task_code=group_task.code group_task_reversion_id=version.revision.id%}">REVERT</a>
{% endfor %}

urls.py:

 url(r'^(?P<project_code>[0-9a-f-]+)/(?P<group_code>[0-9a-f-]+)/(?P<group_reversion_id>\d+)/$',
        group_revert,
        name='group_revert'),

views.py:

Updated to fix your error

def group_revert(request, project_code, group_code, group_reversion_id):
    project = get_object_or_404(Project, pk=project_code, status='open')
    group = get_object_or_404(Group, pk=group_code)

    get_object_or_404(Version.objects.get_for_object(group), pk=group_reversion_id).revision.revert()

    return redirect('project:project_detail', project_code=project.code)

@nurzhannogerbek
Copy link
Author

Thank you! That's what I was looking for.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants