· 6 years ago · Jun 23, 2019, 02:36 PM
1path('import_choices/', views.import_choices, name='import-choices'),
2# views function
3url(r'^data_upload_coa$', views.data_upload_coa, name='data_upload_coa'),
4
5def data_upload_coa(request): # importing chart of account
6
7 if request.method == 'POST':
8 # Get the form data from the request.
9 company = request.POST.get('company')
10 excel_file = {}
11 excel_file = request.FILES["excel_file"]
12
13 # return two dictionnaries from coa
14 accounts, errors = parse_coa(excel_file)
15
16 # Add accounts to chart of accounts table
17 for account in accounts:
18
19 # Create a new record with the data if does not exists before.
20 upload_data = ChartOfAccount.objects.get_or_create(
21 field_account=account['field_account'],
22 field_account_libaccount=account['field_account_libaccount'],
23 field_type=account['field_type'],
24 field_subtype=account['field_subtype'],
25 )
26 # company=company, TO BE ADDED WHEN DEVELOPPING MULTI FIRMS DATA
27
28
29 # Add save success message
30
31 messages.success(request, 'Chart of accounts updated')
32
33 test = len(errors)
34
35 if test == 0:
36
37 return redirect(import_choices)
38
39 else:
40
41 return redirect(import_choices, errors)
42
43 else:
44 # error message
45 messages.info(request, 'Uploading error')
46
47 return redirect(import_choices)
48
49{% extends 'layouts/base.html' %}
50{% load bootstrap3 %}
51
52{% block title %}Import Choices{% endblock %}
53{% block heading %}<h3 class="page-header-center">File to import</h3>
54
55{% endblock %}
56
57<hr>
58<hr>
59{% block page %}
60 <script> // logic for validation of file
61 var _validFileExtensions = [".xlsx", ".xls"];
62 function Validate(oForm) {
63 var arrInputs = oForm.getElementsByTagName("input");
64 for (var i = 0; i < arrInputs.length; i++) {
65 var oInput = arrInputs[i];
66 if (oInput.type == "file") {
67 var sFileName = oInput.value;
68 if (sFileName.length > 0) {
69 var blnValid = false;
70 for (var j = 0; j < _validFileExtensions.length; j++) {
71 var sCurExtension = _validFileExtensions[j];
72 if (sFileName.substr(sFileName.length - sCurExtension.length, sCurExtension.length).toLowerCase() == sCurExtension.toLowerCase()) {
73 blnValid = true;
74 break;
75 }
76 }
77
78 if (!blnValid) {
79 alert("Sorry, " + sFileName + " is invalid, allowed extensions are: " + _validFileExtensions.join(", "));
80 return false;
81 }
82 }
83 }
84 }
85 return true;
86 }
87</script>
88 <script> // Recupere le path du fichier
89
90 var file = document.getElementById("upload");
91
92 file.addEventListener("change", function() {
93 for (var i = 0; i < file.files.length; i++) {
94 console.log(file.files[i].name);
95 }
96 }, false);
97 </script>
98
99 </br>
100 </br>
101<div class="container">
102
103 <div class="panel-heading">
104 <h4 class="panel-title col-md-6">Please choose a type of file to import:</h4>
105 </div>
106 </br>
107 </br>
108 <!----------------Accordeon ----------------->
109 <div class="panel-group col-md-6" id="Choices" >
110 <div class="panel panel-primary">
111 <div class="panel-heading">
112 <h3 class="panel-title" data-target="#Choice-COA" data-toggle="collapse" data-parent="#Choices">Chart of Accounts</h3>
113 </div>
114 <!--accordeon part 1 -->
115 <div class="panel-collapse collapse" id="Choice-COA">
116 <div class="panel-body">
117
118 <div class="row col-md-4" >
119 <form method="POST" action="{% url 'data_upload_coa' %}" method="post" id="fileupload" name="fileupload" enctype="multipart/form-data" data-ajax="false" onsubmit="return Validate(this);">
120 {% csrf_token %}
121 <table class="table">
122 <tr>
123 <td>
124 <input type="text" placeholder="Enter Company Name " name="company" id="company" required>
125 </td>
126 </br>
127 <td>
128 <input type="file" title="Upload excel file" name="excel_file" id="myfile" required="required">
129 </br>
130
131 <button type="submit" class="btn btn-primary btn-sm pull-right">Upload</button>
132 </td>
133 </tr>
134 </table>
135 </form>
136 </div>
137
138 </div>
139 </div>
140 </div>
141
142 </br>
143 <!--accordeon part 2 -->
144 <div class="panel panel-primary">
145 <div class="panel-heading">
146 <h3 class="panel-title" data-target="#import-bv" data-toggle="collapse" data-parent="#Choices">Balance of verification</h3>
147 </div>
148
149 <div class="panel-collapse collapse" id="import-bv">
150 <div class="panel-body">
151 <p>To be complete Balance of verification
152 test</p>
153 </div>
154 </div>
155 </div>
156 </div>