Skip to content
Snippets Groups Projects
Commit 6db35d16 authored by dcz's avatar dcz
Browse files

User can see only its own financial statements.

parent 7c51f7db
Branches
No related merge requests found
/*! Split.js - v1.6.5 */
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Split=t()}(this,(function(){"use strict";var e="undefined"!=typeof window?window:null,t=null===e,n=t?void 0:e.document,i=function(){return!1},r=t?"calc":["","-webkit-","-moz-","-o-"].filter((function(e){var t=n.createElement("div");return t.style.cssText="width:"+e+"calc(9px)",!!t.style.length})).shift()+"calc",s=function(e){return"string"==typeof e||e instanceof String},o=function(e){if(s(e)){var t=n.querySelector(e);if(!t)throw new Error("Selector "+e+" did not match a DOM element");return t}return e},a=function(e,t,n){var i=e[t];return void 0!==i?i:n},u=function(e,t,n,i){if(t){if("end"===i)return 0;if("center"===i)return e/2}else if(n){if("start"===i)return 0;if("center"===i)return e/2}return e},l=function(e,t){var i=n.createElement("div");return i.className="gutter gutter-"+t,i},c=function(e,t,n){var i={};return s(t)?i[e]=t:i[e]=r+"("+t+"% - "+n+"px)",i},h=function(e,t){var n;return(n={})[e]=t+"px",n};return function(r,s){if(void 0===s&&(s={}),t)return{};var f,d,v,m,g,p,y=r;Array.from&&(y=Array.from(y));var z=o(y[0]).parentNode,S=getComputedStyle?getComputedStyle(z):null,b=S?S.flexDirection:null,E=a(s,"sizes")||y.map((function(){return 100/y.length})),_=a(s,"minSize",100),L=Array.isArray(_)?_:y.map((function(){return _})),w=a(s,"maxSize",1/0),x=Array.isArray(w)?w:y.map((function(){return w})),O=a(s,"expandToMin",!1),A=a(s,"gutterSize",10),k=a(s,"gutterAlign","center"),C=a(s,"snapOffset",30),M=Array.isArray(C)?C:y.map((function(){return C})),U=a(s,"dragInterval",1),D=a(s,"direction","horizontal"),B=a(s,"cursor","horizontal"===D?"col-resize":"row-resize"),T=a(s,"gutter",l),j=a(s,"elementStyle",c),F=a(s,"gutterStyle",h);function R(e,t,n,i){var r=j(f,t,n,i);Object.keys(r).forEach((function(t){e.style[t]=r[t]}))}function N(){return p.map((function(e){return e.size}))}function q(e){return"touches"in e?e.touches[0][d]:e[d]}function H(e){var t=p[this.a],n=p[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,R(t.element,t.size,this._b,t.i),R(n.element,n.size,this._c,n.i)}function I(e){var t,n=p[this.a],r=p[this.b];this.dragging&&(t=q(e)-this.start+(this._b-this.dragOffset),U>1&&(t=Math.round(t/U)*U),t<=n.minSize+n.snapOffset+this._b?t=n.minSize+this._b:t>=this.size-(r.minSize+r.snapOffset+this._c)&&(t=this.size-(r.minSize+this._c)),t>=n.maxSize-n.snapOffset+this._b?t=n.maxSize+this._b:t<=this.size-(r.maxSize-r.snapOffset+this._c)&&(t=this.size-(r.maxSize+this._c)),H.call(this,t),a(s,"onDrag",i)(N()))}function W(){var e=p[this.a].element,t=p[this.b].element,n=e.getBoundingClientRect(),i=t.getBoundingClientRect();this.size=n[f]+i[f]+this._b+this._c,this.start=n[v],this.end=n[m]}function X(e){var t=function(e){if(!getComputedStyle)return null;var t=getComputedStyle(e);if(!t)return null;var n=e[g];return 0===n?null:n-="horizontal"===D?parseFloat(t.paddingLeft)+parseFloat(t.paddingRight):parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)}(z);if(null===t)return e;if(L.reduce((function(e,t){return e+t}),0)>t)return e;var n=0,i=[],r=e.map((function(r,s){var o=t*r/100,a=u(A,0===s,s===e.length-1,k),l=L[s]+a;return o<l?(n+=l-o,i.push(0),l):(i.push(o-l),o)}));return 0===n?e:r.map((function(e,r){var s=e;if(n>0&&i[r]-n>0){var o=Math.min(n,i[r]-n);n-=o,s=e-o}return s/t*100}))}function Y(){var t=p[this.a].element,r=p[this.b].element;this.dragging&&a(s,"onDragEnd",i)(N()),this.dragging=!1,e.removeEventListener("mouseup",this.stop),e.removeEventListener("touchend",this.stop),e.removeEventListener("touchcancel",this.stop),e.removeEventListener("mousemove",this.move),e.removeEventListener("touchmove",this.move),this.stop=null,this.move=null,t.removeEventListener("selectstart",i),t.removeEventListener("dragstart",i),r.removeEventListener("selectstart",i),r.removeEventListener("dragstart",i),t.style.userSelect="",t.style.webkitUserSelect="",t.style.MozUserSelect="",t.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",this.gutter.style.cursor="",this.parent.style.cursor="",n.body.style.cursor=""}function G(t){if(!("button"in t)||0===t.button){var r=p[this.a].element,o=p[this.b].element;this.dragging||a(s,"onDragStart",i)(N()),t.preventDefault(),this.dragging=!0,this.move=I.bind(this),this.stop=Y.bind(this),e.addEventListener("mouseup",this.stop),e.addEventListener("touchend",this.stop),e.addEventListener("touchcancel",this.stop),e.addEventListener("mousemove",this.move),e.addEventListener("touchmove",this.move),r.addEventListener("selectstart",i),r.addEventListener("dragstart",i),o.addEventListener("selectstart",i),o.addEventListener("dragstart",i),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",this.gutter.style.cursor=B,this.parent.style.cursor=B,n.body.style.cursor=B,W.call(this),this.dragOffset=q(t)-this.end}}"horizontal"===D?(f="width",d="clientX",v="left",m="right",g="clientWidth"):"vertical"===D&&(f="height",d="clientY",v="top",m="bottom",g="clientHeight"),E=X(E);var J=[];function K(e){var t=e.i===J.length,n=t?J[e.i-1]:J[e.i];W.call(n);var i=t?n.size-e.minSize-n._c:e.minSize+n._b;H.call(n,i)}return(p=y.map((function(e,t){var n,i={element:o(e),size:E[t],minSize:L[t],maxSize:x[t],snapOffset:M[t],i:t};if(t>0&&((n={a:t-1,b:t,dragging:!1,direction:D,parent:z})._b=u(A,t-1==0,!1,k),n._c=u(A,!1,t===y.length-1,k),"row-reverse"===b||"column-reverse"===b)){var r=n.a;n.a=n.b,n.b=r}if(t>0){var s=T(t,D,i.element);!function(e,t,n){var i=F(f,t,n);Object.keys(i).forEach((function(t){e.style[t]=i[t]}))}(s,A,t),n._a=G.bind(n),s.addEventListener("mousedown",n._a),s.addEventListener("touchstart",n._a),z.insertBefore(s,i.element),n.gutter=s}return R(i.element,i.size,u(A,0===t,t===y.length-1,k),t),t>0&&J.push(n),i}))).forEach((function(e){var t=e.element.getBoundingClientRect()[f];t<e.minSize&&(O?K(e):e.minSize=t)})),{setSizes:function(e){var t=X(e);t.forEach((function(e,n){if(n>0){var i=J[n-1],r=p[i.a],s=p[i.b];r.size=t[n-1],s.size=e,R(r.element,r.size,i._b,r.i),R(s.element,s.size,i._c,s.i)}}))},getSizes:N,collapse:function(e){K(p[e])},destroy:function(e,t){J.forEach((function(n){if(!0!==t?n.parent.removeChild(n.gutter):(n.gutter.removeEventListener("mousedown",n._a),n.gutter.removeEventListener("touchstart",n._a)),!0!==e){var i=j(f,n.a.size,n._b);Object.keys(i).forEach((function(e){p[n.a].element.style[e]="",p[n.b].element.style[e]=""}))}}))},parent:z,pairs:J}}}));
...@@ -76,13 +76,11 @@ ...@@ -76,13 +76,11 @@
</a> </a>
</li> </li>
{% endif %} {% endif %}
{% if perms.users.view_statement %}
<li class="nav-item" id="nav-fin-statements"> <li class="nav-item" id="nav-fin-statements">
<a class="nav-link text-light" href="{% url 'financial_settlement:statement_list' %}"> <a class="nav-link text-light" href="{% url 'financial_settlement:statement_list' %}">
{% trans "Umowy" %} {% trans "Umowy" %}
</a> </a>
</li> </li>
{% endif %}
</ul> </ul>
{% endif %} {% endif %}
</div> </div>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<div class="mt-3"> <div class="mt-3">
<h5 class="float-left mt-2">{% trans 'Umowy' %}</h5> <h5 class="float-left mt-2">{% trans 'Umowy' %}</h5>
<div class="mb-4 float-right"> <div class="mb-4 float-right">
{% if perms.users.add_user %} {% if perms.users.edit_statement %}
<a href="{% url 'financial_settlement:statement_add' %}" class="btn btn-sm btn-outline-dark">+ {% trans 'Dodaj umowę' %}</a> <a href="{% url 'financial_settlement:statement_add' %}" class="btn btn-sm btn-outline-dark">+ {% trans 'Dodaj umowę' %}</a>
{% endif %} {% endif %}
</div> </div>
...@@ -37,7 +37,9 @@ ...@@ -37,7 +37,9 @@
<!-- <td>{{ statement.current_cost }}</td>--> <!-- <td>{{ statement.current_cost }}</td>-->
<td> <td>
<a href="{% url 'financial_settlement:statement_detail' pk=statement.pk %}" class="btn btn-xs btn-outline-dark">{% trans 'Szczegóły' %}</a> <a href="{% url 'financial_settlement:statement_detail' pk=statement.pk %}" class="btn btn-xs btn-outline-dark">{% trans 'Szczegóły' %}</a>
<a href="{% url 'financial_settlement:statement_edit' pk=statement.pk %}" class="btn btn-xs btn-outline-dark">{% trans 'Edytuj' %}</a> {% if perms.users.edit_statement %}
<a href="{% url 'financial_settlement:statement_edit' pk=statement.pk %}" class="btn btn-xs btn-outline-dark">{% trans 'Edytuj' %}</a>
{% endif %}
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
......
...@@ -14,9 +14,12 @@ from unifier.choices import UnifiedFrameStatus ...@@ -14,9 +14,12 @@ from unifier.choices import UnifiedFrameStatus
from unifier.models import UnifiedFrame from unifier.models import UnifiedFrame
from users.forms import UserForm, UserProfileForm, NoteForm from users.forms import UserForm, UserProfileForm, NoteForm
@permission_required('finstatement.list_statement')
def statement_list(request): def statement_list(request):
statements = FinStatement.objects.order_by('statement_id')
current_user = request.user
cat_edit_statement = current_user.has_perm(FinStatement, 'edit_statement')
statements = FinStatement.objects.order_by('statement_id') if cat_edit_statement else FinStatement.objects.filter(user=current_user).order_by('statement_id')
for statement in statements: for statement in statements:
statement.unified_frame_count = statement.unified_frame.count() statement.unified_frame_count = statement.unified_frame.count()
statement.current_cost = statement.unified_frame.count() * statement.price_per_unified_frame statement.current_cost = statement.unified_frame.count() * statement.price_per_unified_frame
...@@ -45,7 +48,6 @@ def statement_edit(request, pk): ...@@ -45,7 +48,6 @@ def statement_edit(request, pk):
form = FinStatementForm(instance=statement) form = FinStatementForm(instance=statement)
return render(request, 'fin_statement_form.html', {'form': form, 'title': _('Edytuj umowę')}) return render(request, 'fin_statement_form.html', {'form': form, 'title': _('Edytuj umowę')})
@permission_required('finstatement.detail_statement')
def statement_detail(request, pk): def statement_detail(request, pk):
statement = get_object_or_404(FinStatement, pk=pk) statement = get_object_or_404(FinStatement, pk=pk)
unified_frames = statement.unified_frame; unified_frames = statement.unified_frame;
......
...@@ -29,7 +29,7 @@ class Command(BaseCommand): ...@@ -29,7 +29,7 @@ class Command(BaseCommand):
self._get_permission(Assignment, 'view_assignment'), self._get_permission(Assignment, 'view_assignment'),
self._get_permission(Note, 'view_all_notes'), self._get_permission(Note, 'view_all_notes'),
self._get_permission(Frame, 'manage_invalid_lexical_units'), self._get_permission(Frame, 'manage_invalid_lexical_units'),
self._get_permission(FinStatement, 'view_statement'), self._get_permission(FinStatement, 'edit_statement'),
self._get_permission(FinStatement, 'add_statement'), self._get_permission(FinStatement, 'add_statement'),
) )
lexicographs, __ = Group.objects.get_or_create(name='Leksykografowie') lexicographs, __ = Group.objects.get_or_create(name='Leksykografowie')
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment