liquid_feedback_frontend

annotate model/interest.lua @ 1676:8fde003bdeb0

Added support for alternative DN string
author bsw
date Mon Jun 07 20:58:31 2021 +0200 (2021-06-07)
parents 2f9e1e882de6
children
rev   line source
bsw/jbe@0 1 Interest = mondelefant.new_class()
bsw/jbe@0 2 Interest.table = 'interest'
bsw/jbe@0 3 Interest.primary_key = { "issue_id", "member_id" }
bsw/jbe@0 4 Interest:add_reference{
bsw/jbe@0 5 mode = 'm1',
bsw/jbe@0 6 to = "Member",
bsw/jbe@0 7 this_key = 'member_id',
bsw/jbe@0 8 that_key = 'id',
bsw/jbe@0 9 ref = 'member',
bsw/jbe@0 10 }
bsw/jbe@0 11
bsw/jbe@0 12 Interest:add_reference{
bsw/jbe@0 13 mode = 'm1',
bsw/jbe@0 14 to = "Issue",
bsw/jbe@0 15 this_key = 'issue_id',
bsw/jbe@0 16 that_key = 'id',
bsw/jbe@0 17 ref = 'issue',
bsw/jbe@0 18 }
bsw/jbe@0 19
bsw/jbe@0 20 function Interest:by_pk(issue_id, member_id)
bsw/jbe@0 21 return self:new_selector()
bsw/jbe@0 22 :add_where{ "issue_id = ? AND member_id = ?", issue_id, member_id }
bsw/jbe@0 23 :optional_object_mode()
bsw/jbe@0 24 :exec()
bsw@1618 25 end
bsw@1618 26
bsw@1618 27 function Interest:update(issue_id, member, interested)
bsw@1618 28 local interest = Interest:by_pk(issue_id, member.id)
bsw@1618 29
bsw@1618 30 local issue = Issue:new_selector():add_where{ "id = ?", issue_id }:for_share():single_object_mode():exec()
bsw@1618 31
bsw@1618 32 if not member:has_voting_right_for_unit_id(issue.area.unit_id) then
bsw@1618 33 return execute.view { module = "index", view = "403" }
bsw@1618 34 end
bsw@1618 35
bsw@1618 36 if issue.closed then
bsw@1618 37 slot.put_into("error", _"This issue is already closed.")
bsw@1618 38 return false
bsw@1618 39 elseif issue.fully_frozen then
bsw@1618 40 slot.put_into("error", _"Voting for this issue has already begun.")
bsw@1618 41 return false
bsw@1618 42 elseif
bsw@1618 43 (issue.half_frozen and issue.phase_finished) or
bsw@1618 44 (not issue.accepted and issue.phase_finished)
bsw@1618 45 then
bsw@1618 46 slot.put_into("error", _"Current phase is already closed.")
bsw@1618 47 return false
bsw@1618 48 end
bsw@1618 49
bsw@1618 50 if interested == false then
bsw@1618 51 if interest then
bsw@1618 52 interest:destroy()
bsw@1618 53 end
bsw@1618 54 return true
bsw@1618 55 end
bsw@1618 56
bsw@1618 57 if not interest then
bsw@1618 58 interest = Interest:new()
bsw@1618 59 interest.issue_id = issue_id
bsw@1618 60 interest.member_id = app.session.member_id
bsw@1618 61 interest:save()
bsw@1618 62 end
bsw@1618 63
bsw@1618 64 return true
bsw@1618 65
bsw@1618 66 end

Impressum / About Us