def deleteSelf(self, legacy=True, **kwargs): if legacy: result = ModelFunctions.getModelObject(self.base, **kwargs) else: result = ModelFunctions.filterModelObject(self.base, **kwargs) result = self.auth_class(self.request).authenticate( AuthenticationActionType.DELETE, result) LogFunctions.generateLog( self.request, self.context.authType, "{} {} with kwargs {}".format("DELETE", self.class_name, kwargs)) return result
def abstractFormProcess(self, action, **kwargs): try: post_dict = dict(self.request.POST) dispatcher = super().populateDispatcher() if dispatcher.get(action): member_group_id = kwargs.pop('id', None) member_group = self.useAPI(self.base_class).editSelf(id=member_group_id) else: member_group = self.base_class() member_group.member_group_school = RequestFunctions.getSingleRequestObj(post_dict, 'member_group_school') member_group.member_group_member_ids = [RequestFunctions.getSingleRequestObj(post_dict, name + "_result") for name in self.search_name] if action == 'add': member_group.member_group_name = ModelFunctions.getModelObject( self.assoc_class_school, id=member_group.member_group_school ).school_name + ' - ' + RequestFunctions.getSingleRequestObj( post_dict, 'member_group_name' ) elif action == 'edit': member_group.member_group_name = RequestFunctions.getSingleRequestObj(post_dict, 'member_group_name') member_group.save() LogFunctions.generateLog( self.request, 'admin', LogFunctions.makeLogQuery( self.base_class, action.title(), id=member_group.id)) if action == 'delete': member_group.delete() except Exception: print({"Error": "Cannot Process " + action.title() + " Request."})
def getMemberGroupName(self, member_group_id): if member_group_id is not None: member_group = self.auth_class.authenticate( 'view', ModelFunctions.getModelObject(MemberGroup, id=member_group_id)) member_group_name = member_group.member_group_name return member_group_name return 'Unlinked'
def login(self): post_dict = dict(self.request.POST) uemail = RequestFunctions.getSingleRequestObj(post_dict, "email") upwd = RequestFunctions.getSingleRequestObj(post_dict, "password") if uemail and upwd: u = ModelFunctions.getModelObject(Account, account_email=uemail) if u is None: raise Exception('User not found') else: u_pwd = u.account_password u_salt = u.account_salt verify_pwd = hashlib.sha224( (upwd + u_salt).encode("utf-8")).hexdigest() if u_pwd == verify_pwd: account_type = self.account_type_mapper(u.account_type) if account_type in self.acceptable_type: current_configuration = ConfigAPI( self.request).getAll()[0] self.request.session['uid'] = u.id self.request.session['utype'] = account_type self.request.session['panel_config'] = dict( season=current_configuration.config_current_season) LogFunctions.generateLog( self.request, "system", LogFunctions.makeLogQuery(Account, 'Login', id=u.id)) return redirect(reverse('panel.index')) else: raise Exception('Insufficient Permission') else: raise Exception('Wrong Credentials') else: raise Exception('Insufficient Parameters')
def search(model_name, key, term): # add a list of viewable models or just refactor to use api later resultList = dict() model = apps.get_model(app_label='cicsa_ranking', model_name=model_name) keyDict = (lambda x: {} if x is None else json.loads(key))(key) termDict = (lambda x: {} if x is None else json.loads(term))(term) newTermDict = dict() for key, val in termDict.items(): newTermDict[key + '__icontains'] = val searchDict = {**keyDict, **newTermDict} for obj in ModelFunctions.filterModelObject(model, **searchDict): tempDict = vars(obj) tempDict.pop('_state') identifier = tempDict['id'] resultList[identifier] = tempDict return HttpResponse(json.dumps(resultList, default=str))
def _add(self, **kwargs): post_dict = dict(self.request.POST) event_type = RequestFunctions.getSingleRequestObj( post_dict, 'event_type') event_name = RequestFunctions.getSingleRequestObj( post_dict, 'event_name') event_status = RequestFunctions.getSingleRequestObj( post_dict, 'event_status') event_description = RequestFunctions.getSingleRequestObj( post_dict, 'event_description') event_location = RequestFunctions.getSingleRequestObj( post_dict, 'event_location') event_season = RequestFunctions.getSingleRequestObj( post_dict, 'event_season') event_region = RequestFunctions.getSingleRequestObj( post_dict, 'event_region') event_host = RequestFunctions.getSingleRequestObj( post_dict, 'event_host') event_school = RequestFunctions.getMultipleRequestObj( post_dict, 'event_team') event_race_number = RequestFunctions.getSingleRequestObj( post_dict, 'event_race_number') event_boat_rotation_name = RequestFunctions.getSingleRequestObj( post_dict, 'event_boat_rotation_name') event_start_date = RequestFunctions.getSingleRequestObj( post_dict, 'event_start_date') event_end_date = RequestFunctions.getSingleRequestObj( post_dict, 'event_end_date') race_tag_dict = dict() team_activity_dict = dict() # event generation event_creation = self.base_class() event_creation.event_type = int(event_type) event_creation.event_name = event_name event_creation.event_status = event_status event_creation.event_description = event_description event_creation.event_location = event_location event_creation.event_season = event_season event_creation.event_region = int(event_region) event_creation.event_host = int(event_host) event_creation.event_boat_rotation_name = event_boat_rotation_name event_creation.event_race_number = int(event_race_number) event_creation.event_start_date = event_start_date event_creation.event_end_date = event_end_date event_creation.event_team_number = len(event_school) event_creation.event_school_ids = event_school event_creation.event_rotation_detail = dict() event_creation.save() # event tag generation for tag in self.EVENT_RACE_TAG: event_tag = EventTag() event_tag.event_tag_event_id = event_creation.id event_tag.event_tag_name = tag event_tag.save() race_tag_dict[tag] = event_tag.id for school_id in event_school: # NOTE: Cannot use API here because no permission to get Model. school = ModelFunctions.getModelObject(School, id=school_id) # summary generation summary = Summary() summary.summary_event_parent = event_creation.id summary.summary_event_school = school_id summary.save() # team generation for index, suffix in enumerate(self.EVENT_TEAM_NAME_SUFFIX): team = Team() team_name = '{} {}'.format(school.school_default_team_name, suffix) team.team_name = team_name team.team_school = school_id team.team_status = Team.TEAM_STATUS_ACTIVE team.team_tag_id = list(race_tag_dict.values())[index] team.save() if self.EVENT_RACE_TAG[index] not in team_activity_dict: team_activity_dict[self.EVENT_RACE_TAG[index]] = [] team_activity_dict[self.EVENT_RACE_TAG[index]].append(team.id) for tag, tag_id in race_tag_dict.items(): for race in range(event_creation.event_race_number): # event activity generation event_activity = EventActivity() event_activity.event_activity_event_parent = event_creation.id event_activity.event_activity_event_tag = tag_id event_activity.event_activity_name = '{} Race {}'.format( tag, str(race + 1)) event_activity.event_activity_order = race + 1 event_activity.event_activity_result = dict() event_activity.event_activity_note = "" event_activity.event_activity_type = EventActivity.EVENT_ACTIVITY_TYPE_RACE event_activity.event_activity_status = Event.EVENT_STATUS_PENDING event_activity.save() for team_id in team_activity_dict[tag]: # event team link generation event_team = EventTeam() event_team.event_team_event_activity_id = event_activity.id event_team.event_team_id = team_id event_team.save() event_creation.event_rotation_detail = self.__rotationGenerator( race_tag_dict, team_activity_dict, event_creation.event_race_number, event_creation.event_team_number) event_creation.save()
def add(): post_dict = dict(self.request.POST) event_type = RequestFunctions.getSinglePostObj( post_dict, 'event_type') event_class = RequestFunctions.getSinglePostObj( post_dict, 'event_class') event_name = RequestFunctions.getSinglePostObj( post_dict, 'event_name') event_status = RequestFunctions.getSinglePostObj( post_dict, 'event_status') event_description = RequestFunctions.getSinglePostObj( post_dict, 'event_description') event_location = RequestFunctions.getSinglePostObj( post_dict, 'event_location') event_season = RequestFunctions.getSinglePostObj( post_dict, 'event_season') event_region = RequestFunctions.getSinglePostObj( post_dict, 'event_region') event_host = RequestFunctions.getSinglePostObj( post_dict, 'event_host') event_school = RequestFunctions.getMultiplePostObj( post_dict, 'event_team') event_race_number = RequestFunctions.getSinglePostObj( post_dict, 'event_race_number') event_boat_rotation_name = RequestFunctions.getSinglePostObj( post_dict, 'event_boat_rotation_name') event_start_date = RequestFunctions.getSinglePostObj( post_dict, 'event_start_date') event_end_date = RequestFunctions.getSinglePostObj( post_dict, 'event_end_date') race_tag_dict = dict() team_activity_dict = dict() # event generation event_creation = self.base_class() event_creation.event_type = int(event_type) event_creation.event_class = int(event_class) event_creation.event_name = event_name event_creation.event_status = event_status event_creation.event_description = event_description event_creation.event_location = event_location event_creation.event_season = event_season event_creation.event_region = int(event_region) event_creation.event_host = int(event_host) event_creation.event_boat_rotation_name = event_boat_rotation_name event_creation.event_race_number = int(event_race_number) event_creation.event_start_date = event_start_date event_creation.event_end_date = event_end_date event_creation.event_team_number = len(event_school) event_creation.event_school_ids = event_school event_creation.event_rotation_detail = {} event_creation.save() # event tag generation for tag in self.event_race_tag: event_tag = self.assoc_class_tag() event_tag.event_tag_event_id = event_creation.id event_tag.event_tag_name = tag event_tag.save() race_tag_dict[tag] = event_tag.id LogFunctions.generateLog( self.request, 'admin', LogFunctions.makeLogQuery(self.assoc_class_tag, action.title(), id=event_tag.id)) for school_id in event_school: # NOTE: not sure if using api here will cause error school = ModelFunctions.getModelObject(School, id=school_id) # summary generation summary = self.assoc_class_summary() summary.summary_event_parent = event_creation.id summary.summary_event_school = school_id summary.save() LogFunctions.generateLog( self.request, 'admin', LogFunctions.makeLogQuery(self.assoc_class_summary, action.title(), id=summary.id)) # team generation for index, suffix in enumerate(self.event_team_name_suffix): team = self.assoc_class_team() team_name = str( school.school_default_team_name) + ' ' + suffix team.team_name = team_name team.team_school = school_id team.team_status = "active" team.team_tag_id = list(race_tag_dict.values())[index] team.save() if self.event_race_tag[index] not in team_activity_dict: team_activity_dict[self.event_race_tag[index]] = [] team_activity_dict[self.event_race_tag[index]].append( team.id) LogFunctions.generateLog( self.request, 'admin', LogFunctions.makeLogQuery(self.assoc_class_team, action.title(), id=team.id)) for tag, tag_id in race_tag_dict.items(): for race in range(event_creation.event_race_number): # event activity generation event_activity = self.assoc_class_activity() event_activity.event_activity_event_parent = event_creation.id event_activity.event_activity_event_tag = tag_id event_activity.event_activity_name = tag + ' Race ' + str( race + 1) event_activity.event_activity_order = race + 1 event_activity.event_activity_result = dict() event_activity.event_activity_note = "" event_activity.event_activity_type = self.event_activity_type event_activity.event_activity_status = "future" event_activity.save() LogFunctions.generateLog( self.request, 'admin', LogFunctions.makeLogQuery(self.assoc_class_activity, action.title(), id=event_activity.id)) for team_id in team_activity_dict[tag]: # event team link generation event_team = self.assoc_class_team_link() event_team.event_team_event_activity_id = event_activity.id event_team.event_team_id = team_id event_team.save() LogFunctions.generateLog( self.request, 'admin', LogFunctions.makeLogQuery( self.assoc_class_team_link, action.title(), id=event_team.id)) event_creation.event_rotation_detail = self.__rotationGenerator( race_tag_dict, team_activity_dict, event_creation.event_race_number, event_creation.event_team_number) event_creation.save() LogFunctions.generateLog( self.request, 'admin', LogFunctions.makeLogQuery(self.base_class, action.title(), id=event_creation.id))
def getAll(self): result = ModelFunctions.filterModelObject(self.base) return self.auth_class(self.request).authenticate( AuthenticationActionType.VIEW, result)
def excludeSelf(self, **kwargs): result = ModelFunctions.excludeModelObject(self.base, **kwargs) return self.auth_class(self.request).authenticate( AuthenticationActionType.VIEW, result)