|
|
|
@ -195,11 +195,29 @@ class MemberViewSet(Base, Retrieve, Update): |
|
|
|
|
def unpause(self, request, pk=None): |
|
|
|
|
if not is_admin_director(self.request.user): |
|
|
|
|
raise exceptions.PermissionDenied() |
|
|
|
|
|
|
|
|
|
today = utils.today_alberta_tz() |
|
|
|
|
member = self.get_object() |
|
|
|
|
member.current_start_date = utils.today_alberta_tz() |
|
|
|
|
|
|
|
|
|
difference = utils.today_alberta_tz() - member.paused_date |
|
|
|
|
if difference.days > 370: # give some leeway |
|
|
|
|
logging.info('Member has been away for %s days (since %s), unvetting...', difference.days, member.paused_date) |
|
|
|
|
member.vetted_date = None |
|
|
|
|
member.orientation_date = None |
|
|
|
|
member.lathe_cert_date = None |
|
|
|
|
member.mill_cert_date = None |
|
|
|
|
member.wood_cert_date = None |
|
|
|
|
member.wood2_cert_date = None |
|
|
|
|
member.tormach_cnc_cert_date = None |
|
|
|
|
member.precix_cnc_cert_date = None |
|
|
|
|
member.rabbit_cert_date = None |
|
|
|
|
member.trotec_cert_date = None |
|
|
|
|
|
|
|
|
|
member.current_start_date = today |
|
|
|
|
member.paused_date = None |
|
|
|
|
if not member.monthly_fees: |
|
|
|
|
member.monthly_fees = 55 |
|
|
|
|
|
|
|
|
|
member.save() |
|
|
|
|
utils.tally_membership_months(member) |
|
|
|
|
utils.gen_member_forms(member) |
|
|
|
@ -559,6 +577,7 @@ class DoorViewSet(viewsets.ViewSet, List): |
|
|
|
|
for card in cards: |
|
|
|
|
member = card.user.member |
|
|
|
|
if member.paused_date: continue |
|
|
|
|
if not member.vetted_date: continue |
|
|
|
|
if not member.is_allowed_entry: continue |
|
|
|
|
|
|
|
|
|
active_member_cards[card.card_number] = '{} ({})'.format( |
|
|
|
@ -760,7 +779,8 @@ class StatsViewSet(viewsets.ViewSet, List): |
|
|
|
|
if should_count: |
|
|
|
|
start_new_use = not last_use or last_use.finished_at or last_use.username != username |
|
|
|
|
if start_new_use: |
|
|
|
|
if username_isfrom_track and time.time() - track[device]['time'] > 20*60: |
|
|
|
|
username_isexpired = time.time() - track[device]['time'] > 2*60*60 # two hours |
|
|
|
|
if username_isfrom_track and username_isexpired: |
|
|
|
|
msg = 'Usage tracker problem expired username {} for device: {}'.format(username, device) |
|
|
|
|
utils.alert_tanner(msg) |
|
|
|
|
logger.error(msg) |
|
|
|
@ -1428,6 +1448,21 @@ class PinballViewSet(Base): |
|
|
|
|
|
|
|
|
|
return Response(200) |
|
|
|
|
|
|
|
|
|
@action(detail=True, methods=['get']) |
|
|
|
|
def get_name(self, request, pk=None): |
|
|
|
|
auth_token = request.META.get('HTTP_AUTHORIZATION', '') |
|
|
|
|
if secrets.PINBALL_API_TOKEN and auth_token != 'Bearer ' + secrets.PINBALL_API_TOKEN: |
|
|
|
|
raise exceptions.PermissionDenied() |
|
|
|
|
|
|
|
|
|
card = get_object_or_404(models.Card, card_number=pk) |
|
|
|
|
member = card.user.member |
|
|
|
|
|
|
|
|
|
res = dict( |
|
|
|
|
name=member.preferred_name + ' ' + member.last_name[0] |
|
|
|
|
) |
|
|
|
|
return Response(res) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RegistrationView(RegisterView): |
|
|
|
|
serializer_class = serializers.MyRegisterSerializer |
|
|
|
|
|
|
|
|
|