Merge pull request #312 from Reena-cell/develop

feature add ATM Attribute in update ATM
This commit is contained in:
Simon Redfern 2023-04-03 12:20:19 +02:00 committed by GitHub
commit b2257de8ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 267 additions and 16 deletions

View File

@ -258,7 +258,7 @@ API_EXPLORER_HOST = 'http://127.0.0.1:8082'
# Only override this if you have a separate portal instance
API_PORTAL = API_HOST
API_BASE_PATH = '/obp/v'
API_VERSION = '5.0.0'
API_VERSION = '5.1.0'
# URL to API Tester
API_TESTER_URL = 'https://www.example.com'

View File

@ -263,6 +263,36 @@ class CreateAtmForm(forms.Form):
),
required=False,
)
type_attribute = forms.CharField(
label=_('Type'),
widget=forms.TextInput(
attrs={
'placeholder': _('Type'),
'class': 'form-control',
}
),
required=False,
)
name_attribute = forms.CharField(
label=_('Attribute Name'),
widget=forms.TextInput(
attrs={
'placeholder': _('Name'),
'class': 'form-control',
}
),
required=False,
)
value_attribute = forms.CharField(
label=_('Value'),
widget=forms.TextInput(
attrs={
'placeholder': _('2012-04-23'),
'class': 'form-control',
}
),
required=False,
)
location_categories = forms.CharField(
label=_('Location Category'),
widget=forms.TextInput(

View File

@ -3,6 +3,8 @@
<div id="atms">
<h1>{% trans "ATM Detail" %}</h1>
<h2>{{ bank_id }} : {{ atm_id }}</h2>
<input type="hidden" value="{{bank_id}}" id="current_bank_id" />
<input type="hidden" value="{{atm_id}}" id="current_atm_id" />
<form method="post">
{% csrf_token %} {% if form.non_field_errors %}
<div class="alert alert-danger">
@ -202,7 +204,6 @@
{{ form.address.label_tag }} {{ form.address }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.lobby.errors %}
<div class="alert alert-danger">{{ form.lobby.errors }}</div>{% endif %}
@ -211,13 +212,164 @@
</div>
</div>
</div>
<input type="submit" value="Update" class="btn btn-primary" />
<input type="submit" value="Update" class="btn btn-primary"/>
</form>
</div>
{% endblock content %} {% block extrajs %} {% comment %}
<script type="text/javascript" src="{% static 'atms/js/atms.js' %}"></script>
<script type="text/javascript">
<form method ="POST">
{% csrf_token %}
<div class="row">
<h1>Hello ATM Attribute</h1>
<div class="col-xs-12 col-sm-3">
<label class="form-group">{% trans "Attribute Name" %}:</label> <br>
</div>
<div class="col-xs-12 col-sm-3">
<label class="form-group">{% trans "Attribute Type" %}:</label> <br>
</div>
<div class="col-xs-12 col-sm-3">
<label class="form-group">{% trans "Attribute Value" %}:</label> <br>
</div>
</div>
<div class="runner">
<div class="row">
<div class="col-xs-12 col-sm-3">
<div class="form-group" cols="1" rows="1">
<input class="atm_attribute_name" value="Attribute Name">
</div>
</div>
<div class="col-xs-12 col-sm-3">
<div class="form-group" cols="1" rows="1">
<input class="atm_attribute_type" value="Attribute Type">
</div>
</div>
<div class="col-xs-6 col-sm-3">
<div class="form-group" cols="1" rows="1">
<input class="atm_attribute_value" value="Attribute Value">
</div>
</div>
<div class="col-sm-6 col-sm-3">
<div class="form-group">
<button class="btn btn-primary btn-green forSave">{% trans "Create" %}</button>
</div>
</div>
</div>
</div>
{% for attribute in bank_attributes_list %}
{% url 'my-atm-attribute-detail' attribute.atm_attribute_id as url_atm_attribute_detail %}
<div class="runner">
<div class="row">
{% if attribute.atm_attribute_id %}
<input type ="hidden" class="atm_attribute_id" value="{{ attribute.atm_attribute_id }}">
<div class="col-xs-12 col-sm-3">
<div class="form-group" cols="1" rows="1">
<div>
<input class="atm_attribute_name form-control" value="{{ attribute.name }}">
</div>
</div>
</div>
<div class="col-xs-12 col-sm-3">
<div class="form-group" cols="1" rows="1">
<div>
<input class="atm_attribute_type form-control" value="{{ attribute.type }}">
</div>
</div>
</div>
<div class="col-xs-6 col-sm-3">
<div class="form-group" cols="1" rows="1">
<div>
<input class="atm_attribute_value form-control" value="{{ attribute.value }}">
</div>
</div>
</div>
{% endif %}
<div class="col-sm-3 col-sm-1">
<div class="form-group">
<button class="btn btn-primary forUpdate">{% trans "Update" %}</button>
</div>
</div>
<div class="col-sm-3 col-sm-1">
<div class="form-group">
<button class="btn btn-primary btn-red forDelete">{% trans "Delete" %}</button>
</div>
</div>
</div>
</div>
{% endfor %}
</form></div>
<script type="text/javascript" src="{% static 'js/jquery.min.js' %}"></script>
<script>
$(document).ready(function($) {
var bank_id = $('#current_bank_id').val();
var atm_id = $('#current_atm_id').val();
console.log(bank_id, atm_id)
$('.runner button.forSave').click(function(e) {
e.preventDefault();
let runner = $(this).parent().parent().parent();
let name = $(runner).find('.atm_attribute_name').val();
let type = $(runner).find('.atm_attribute_type').val();
let value = $(runner).find('.atm_attribute_value').val();
$('.runner button.forUpdate').attr("disabled","disabled");
$('.runner button.forSave').attr("disabled","disabled");
$('.runner button.forDelete').attr("disabled","disabled");
console.log(name, type, value, bank_id)
$.post('save/attribute', {
'name': name,
'type': type,
'value': value,
'bank_id': bank_id,
'atm_id' : atm_id
}, function (response) {
location.reload();
});
});
$('.runner button.forUpdate').click(function(e) {
e.preventDefault();
let runner = $(this).parent().parent().parent();
let atm_attribute_id = $(runner).find('.atm_attribute_id').attr("value");
console.log(atm_attribute_id)
let name = $(runner).find('.atm_attribute_name').val();
let type = $(runner).find('.atm_attribute_type').val();
let value = $(runner).find('.atm_attribute_value').val();
console.log(name, type, value, bank_id, atm_id)
$('.runner button.forUpdate').attr("disabled","disabled");
$('.runner button.forSave').attr("disabled","disabled");
$('.runner button.forDelete').attr("disabled","disabled");
$.post('updateattribute/attribute', {
'atm_attribute_id': atm_attribute_id,
'name': name,
'type': type,
'value': value,
'bank_id': bank_id,
'atm_id' : atm_id
}, function (response) {
location.reload();
});
});
$('.runner button.forDelete').click(function(e) {
e.preventDefault();
let runner = $(this).parent().parent().parent();
let atm_attribute_id = $(runner).find('.atm_attribute_id').attr("value");
console.log(atm_attribute_id)
$('.runner button.forUpdate').attr("disabled","disabled");
$('.runner button.forSave').attr("disabled","disabled");
$('.runner button.forDelete').attr("disabled","disabled");
$.post('delete/attribute', {
'atm_attribute_id': atm_attribute_id,
'bank_id': bank_id,
'atm_id' : atm_id
}, function (response) {
location.reload();
});
});});
</script>
{% endblock content %}
{% block extrajs %} {% comment %}
<script type="text/javascript" src="{% static 'atms/js/atms.js' %}"></script>
{% endcomment %} {% endblock extrajs %} {% block extracss %}
<link href="{% static 'atms/css/atms.css' %}" rel="stylesheet"> {% endblock extracss %}

View File

@ -4,7 +4,7 @@ URLs for metrics app
"""
from django.conf.urls import url
from .views import IndexAtmsView, UpdateAtmsView
from atms.views import IndexAtmsView, UpdateAtmsView, atm_attribute_save, atm_attribute_delete, atm_attribute_update
urlpatterns = [
url(r'^create',
@ -13,4 +13,10 @@ urlpatterns = [
url(r'^update/(?P<atm_id>[ 0-9\w|\W\@\.\+-]+)/bank/(?P<bank_id>[0-9\w\@\.\+-]+)/$',
UpdateAtmsView.as_view(),
name='atms_update'),
url(r'save/attribute', atm_attribute_save,
name='atm_attribute_save'),
url(r'delete/attribute', atm_attribute_delete,
name='atm_attribute_delete'),
url(r'updateattribute/attribute', atm_attribute_update,
name='atm_attribute_update'),
]

View File

@ -14,6 +14,9 @@ from django.views.generic import FormView
from obp.api import API, APIError
from .forms import CreateAtmForm
from django.utils.translation import ugettext_lazy as _
from django.views.decorators.csrf import csrf_exempt
from django.urls import reverse, reverse_lazy
from base.utils import exception_handle, error_once_only
CHOOSE = "Choose..."
@ -103,7 +106,6 @@ class IndexAtmsView(LoginRequiredMixin, FormView):
def form_valid(self, form):
try:
data = form.cleaned_data
print(data, "This is a data")
urlpath = '/banks/{}/atms'.format(data['bank_id'])
payload ={
"id": data["atm_id"],
@ -211,7 +213,9 @@ class UpdateAtmsView(LoginRequiredMixin, FormView):
# Cannot add api in constructor: super complains about unknown kwarg
form.api = self.api
fields = form.fields
urlpath = "/banks/{}/atms/{}".format(self.kwargs['bank_id'], self.kwargs['atm_id'])
urlpath = "/banks/{}/atms/{}".format(self.kwargs['bank_id'], self.kwargs['atm_id']) #Add new attribute urlpath
atm_attributes_url_path = "/banks/{}/atms/{}/attributes".format(self.kwargs['bank_id'], self.kwargs['atm_id'])
try:
fields['bank_id'].choices = self.api.get_bank_id_choices()
except APIError as err:
@ -261,10 +265,6 @@ class UpdateAtmsView(LoginRequiredMixin, FormView):
my_accessibility_features = result['accessibility_features']
my_accessibility_features_initial = ','.join(my_accessibility_features)
fields['accessibility_features'].initial = my_accessibility_features_initial
self._paylod_choices(result, fields)
except APIError as err:
messages.error(self.request, err)
except Exception as err:
messages.error(self.request, "Unknown Error {}".format(err))
return form
@ -370,13 +370,76 @@ class UpdateAtmsView(LoginRequiredMixin, FormView):
"balance_inquiry_fee": data["balance_inquiry_fee"] if data["balance_inquiry_fee"]!="" else "false"
}
def bank_attributes(self, **kwargs):
atm_attributes_url_path = "/banks/{}/atms/{}/attributes".format(self.kwargs['bank_id'], self.kwargs['atm_id'])
try:
atm_attributes_result = self.api.get(atm_attributes_url_path)["bank_attributes"]
return atm_attributes_result
except Exception as err:
messages.error(self.request, "Unknown Error {}".format(err))
return " "
def get_context_data(self, **kwargs):
context = super(UpdateAtmsView, self).get_context_data(**kwargs)
self.bank_id = self.kwargs['bank_id']
self.atm_id = self.kwargs['atm_id']
context.update({
'atm_id': self.atm_id,
'bank_id': self.bank_id
'bank_id': self.bank_id,
"bank_attributes_list": self.bank_attributes(**kwargs)
})
return context
@exception_handle
@csrf_exempt
def atm_attribute_save(request):
api = API(request.session.get('obp'))
#urlpath = '/my/api-collections'
bank_id = request.POST.get('bank_id').strip()
atm_id = request.POST.get('atm_id').strip()
urlpath_save = '/banks/{}/atms/{}/attributes'.format(bank_id, atm_id)
payload = {
'name': request.POST.get('name').strip(),
'type': request.POST.get('type').strip(),
'value': request.POST.get('value').strip(),
'is_active': True
}
result = api.post(urlpath_save, payload = payload)
return result
@exception_handle
@csrf_exempt
def atm_attribute_update(request):
bank_id = request.POST.get('bank_id').strip()
atm_id = request.POST.get('atm_id').strip()
atm_attribute_id = request.POST.get('atm_attribute_id').strip()
api = API(request.session.get('obp'))
urlpath_update = '/banks/{}/atms/{}/attributes/{}'.format(bank_id, atm_id, atm_attribute_id)
payload = {
'name': request.POST.get('name').strip(),
'type': request.POST.get('type').strip(),
'value': request.POST.get('value').strip(),
'is_active': True
}
result = api.put(urlpath_update, payload=payload)
return result
@exception_handle
@csrf_exempt
def atm_attribute_delete(request):
bank_id = request.POST.get('bank_id').strip()
atm_id = request.POST.get('atm_id').strip()
atm_attribute_id = request.POST.get('atm_attribute_id').strip()
api = API(request.session.get('obp'))
urlpath_delete = '/banks/{}/atms/{}/attributes/{}'.format(bank_id, atm_id, atm_attribute_id)
result = api.delete(urlpath_delete)
return result